[Lustre-devel] Query to understand the Lustre request/reply message
Alexey Lyashkov
alexey.lyashkov at clusterstor.com
Tue Oct 12 21:41:49 PDT 2010
mds_handle (start processing),
MDS_CHECK_RESENT() macro to handle reconstruction.
mds_set_info_rpc - to simple rpc processing, possible mds_setxattr (mds_setxattr_internal) with generic reconstruction function.
On Oct 13, 2010, at 07:35, Vilobh Meshram wrote:
> Thanks a lot Alexey for the reply.The information will be really useful.
>
> Since I am using 1.8.1.1 for my research project I will have to rely on the old API.Since in the source tree prior to 2.0 we do not have a mdt/mdt_handler.c and layout.c files will have to work with the low level buffer management structures(ptlrpc_request,lustre_msg_v2,etc).Do you know a place or a function which make use of the old API which I can use as a reference to write the RPC for my task.
>
> Thanks,
> Vilobh
> Graduate Research Associate
> Department of Computer Science
> The Ohio State University Columbus Ohio
>
>
> On Wed, Oct 13, 2010 at 12:20 AM, Alexey Lyashkov <alexey.lyashkov at clusterstor.com> wrote:
>
> On Oct 13, 2010, at 07:06, Vilobh Meshram wrote:
>
>> Thanks Alexey for the reply.Thanks a lot.
>>
>> I will try out the steps mentioned by you and see if I can add a new RPC for the task which I am thinking of to implement in Lustre.
>>
>> The RPC of which I am thinking of will not return the lock to the caller.Yes that rpc will have special code to reconstruct in replay phase.
>
> In that case possible you need look to 'setattr' functions - it have own mdt_reconstruct_setattr reconstructor, but that is need support on client side.
> typically that say - you need have special field in message to copy data from server reply.
>
>>
>> Just a last question from which release of Lustre can we make use of the new API.
>> Is their any documentation which lists the use of the new API.If yes can you please point me to that ?
>
> lustre 1.x have a old PtlRPC API, lustre 2.0 have a mix of new and old, but have a migrate to use new API.
>
>>
>> Thanks again.
>>
>> Thanks,
>> Vilobh
>> Graduate Research Associate
>> Department of Computer Science
>> The Ohio State University Columbus Ohio
>>
>> On Tue, Oct 12, 2010 at 11:46 PM, Alexey Lyashkov <alexey.lyashkov at clusterstor.com> wrote:
>> That is depend of rpc type - is that RPC want to be return lock to caller or not, and is that rpc want to have special code to reconstruct in replay phase.
>> in general you need look to mdt/mdt_handler.c. mdt_get_info is good example of simple rpc processing - but it use new PtlRPC api.
>> that is API hide of low level request structures and provide api to access to message buffer by identifier.
>> to use that API you need define structure of own message in ptlrpc/layout.c, and own command in enum mds_cmd_t, adjust array with commands and write own handler.
>>
>>
>> On Oct 13, 2010, at 01:17, Vilobh Meshram wrote:
>>> Thanks Alexey.It was helpful.
>>>
>>> I have one more question :-
>>>
>>> If we want to add a new RPC with a new opcode are there any guidlines to be followed in the Lustre File System.
>>>
>>> Also ,
>>> 1)How does the MDS process the ptlrpc_request i.e how does the MDS extract the buffer information from the ptlrpc_message.
>>> 2)For every new RPC is the message length which is to be sent on wire ( including the fixed header size + the buffer size) dependent on the number of buffers in the lustre request message i.e the count field in the ptlrpc_prep_req() or the size of the size[] array.
>>>
>>>
>>> Thanks,
>>> Vilobh
>>> Graduate Research Associate
>>> Department of Computer Science
>>> The Ohio State University Columbus Ohio
>>>
>>>
>>> On Tue, Oct 12, 2010 at 2:21 PM, Alexey Lyashkov <alexey.lyashkov at clusterstor.com> wrote:
>>> Hi Vilobh,
>>>
>>> ldlm_cli_cancel_req is good example to use old PtlRPC API.
>>> for first you need allocate request buffer via ptlrpc_prep_req
>>> next is - allocate reply buffer via ptlrpc_req_set_repsize
>>> next - call ptlrpc_queue_wait to send message and wait reply.
>>>
>>> osc_getattr_async good example for new PtlRPC API and async RPC processing.
>>>
>>> if that isn't help you - please show a yours code to find a error.
>>>
>>> On Oct 12, 2010, at 20:55, Vilobh Meshram wrote:
>>>
>>>> I want to understand the message encoding and decoding logic in lustre.I am planning to send a request to the MDS and based on the reply from MDs want to populate the
>>>>
>>>> struct lustre_msg *rq_repbuf; /* client only, buf may be bigger than msg */
>>>> struct lustre_msg *rq_repmsg;
>>>>
>>>> I am trying this for a simple "Hello" message but not seeing the expected output.Sometime I even see Kernel Crash.
>>>> If you can please give me some insight on the way the Lustre File system encodes decodes the messages sent accross nodes it would be helpful.
>>>>
>>>> Thanks,
>>>> Vilobh
>>>> Graduate Research Associate
>>>> Department of Computer Science
>>>> The Ohio State University Columbus Ohio
>>>> _______________________________________________
>>>> Lustre-devel mailing list
>>>> Lustre-devel at lists.lustre.org
>>>> http://lists.lustre.org/mailman/listinfo/lustre-devel
>>>
>>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lustre.org/pipermail/lustre-devel-lustre.org/attachments/20101013/d156f01c/attachment.htm>
More information about the lustre-devel
mailing list