Re: [RFC 06/11] nfsd41: Backchannel: Add sequence arguments to callback RPC arguments

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/20/09 12:32 AM, "Benny Halevy" <bhalevy@xxxxxxxxxxx> wrote:

> On May. 20, 2009, 6:00 +0300, Ricardo Labiaga <Ricardo.Labiaga@xxxxxxxxxx>
> wrote:
>> Follow the model we use in the client. Make the sequence arguments
>> part of the regular RPC arguments.  The results point to them.  Adjust
>> references to the sequence arguments.
>> 
>> Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@xxxxxxxxxx>
>> [define struct nfsd4_cb_sequence here]
>> Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx>
>> ---
>>  fs/nfsd/nfs4callback.c     |    9 +++++++++
>>  include/linux/nfsd/state.h |    9 +++++++++
>>  2 files changed, 18 insertions(+), 0 deletions(-)
>> 
>> diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c
>> index f75750e..0b5c4a6 100644
>> --- a/fs/nfsd/nfs4callback.c
>> +++ b/fs/nfsd/nfs4callback.c
>> @@ -92,6 +92,15 @@ enum nfs_cb_opnum4 {
>> cb_sequence_dec_sz +            \
>> op_dec_sz)
>>  
>> +struct nfs4_rpc_args {
>> + void    *args_op;
>> + struct nfsd4_cb_sequence args_seq;
>> +};
>> +
>> +struct nfs4_rpc_res {
>> + struct nfsd4_cb_sequence *res_seq;
> 
> Given the size of nfsd4_cb_sequence, why not just embed it here?

nfs4_rpc_res->res_seq will simply point to nfs4_rpc_args.args_seq.  During
decode we only need to verify the return values are the same, as what we
sent, so I don't see the need to have a separate copy.  That's why the args
have the actual structure, but the results only a pointer.

- ricardo

> (Historically, it didn't have the cbs_minorversion member so
> it's presence was the actual indication of the minorversion.
> Now that this has changed, I see no good reason not to embed it.
> 
> Benny
> 
>> +};
>> +
>>  /*
>>  * Generic encode routines from fs/nfs/nfs4xdr.c
>>  */
>> diff --git a/include/linux/nfsd/state.h b/include/linux/nfsd/state.h
>> index 212a75b..931aaa6 100644
>> --- a/include/linux/nfsd/state.h
>> +++ b/include/linux/nfsd/state.h
>> @@ -61,6 +61,12 @@ typedef struct {
>>  #define si_stateownerid   si_opaque.so_stateownerid
>>  #define si_fileid         si_opaque.so_fileid
>>  
>> +struct nfsd4_cb_sequence {
>> + /* args/res */
>> + u32   cbs_minorversion;
>> + struct nfs4_client *cbs_clp;
>> +};
>> +
>>  struct nfs4_delegation {
>> struct list_head dl_perfile;
>> struct list_head dl_perclnt;
>> @@ -188,6 +194,9 @@ struct nfs4_client {
>> struct nfsd4_slot cl_slot; /* create_session slot */
>> u32   cl_exchange_flags;
>> struct nfs4_sessionid cl_sessionid;
>> +
>> + /* for nfs41 callbacks */
>> + struct svc_xprt  *cl_cb_xprt; /* 4.1 callback transport */
>>  };
>>  
>>  /* struct nfs4_client_reset

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux