[pnfs] nfs41 patch subsets
Labiaga, Ricardo
Ricardo.Labiaga at netapp.com
Mon Jul 14 21:32:20 EDT 2008
Hi Benny,
> -----Original Message-----
> From: Benny Halevy [mailto:bhalevy at panasas.com]
> Sent: Monday, July 07, 2008 10:18 AM
> ...
> client patches
> --------------
>
> client sunrpc infra
> 0dd3961 nfs41: sunrpc: introduce rpc_call_validate_args action
> 156d3ff [FIXME] nfs41: sunrpc: do not verify calldir in
> call_verify
xs_tcp_read_calldir() is now responsible for reading the RPC call
direction and determining whether it is a reply or a callback request.
The call to xdr_skb_read_bits() inside xs_tcp_read_calldir() moves the
xdr_skb_reader offset past the RPC call direction (offset should be
equal to 8). Therefore xs_tcp_read_common() called from
xs_tcp_ready_reply() should be copying the TCP buffer starting past the
RPC call direction. It is now necessary to read the RPC call direction
earlier to determine whether to call the reply handler or the callback
handler.
It is therefore correct to skip past the XID and call/reply flag in
call_verify().
The following code should be brought back, unless I'm really misreading
the code. We're effectively doing this already by commenting out the
goto.
@@ -1355,13 +1377,8 @@ call_verify(struct rpc_task *task)
}
if ((len -= 3) < 0)
goto out_overflow;
- p += 1; /* skip XID */
+ p += 2; /* skip XID and the call/reply flag */
- if ((n = ntohl(*p++)) != RPC_REPLY) {
- dprintk("RPC: %5u %s: not an RPC reply: %x\n",
- task->tk_pid, __FUNCTION__, n);
- goto out_garbage;
- }
if ((n = ntohl(*p++)) != RPC_MSG_ACCEPTED) {
if (--len < 0)
goto out_overflow;
Thanks,
- ricardo
> client infra
> ca7ad4a nfs41: Add Kconfig symbols for NFSv4.1
> 894d9d4 nfs41: common protocol definitions
> 4706b3c nfs41: refactor xdr: point to struct xdr_stream
> 29b3f67 nfs41: refactor xdr: add nfs40 stubs
> squash -> ab07dd9 [SQUASHME] nfs41: rename nfs40
> procedures and version names back to nfs4
> b28a4a5 nfs41: refactor xdr: restore auxilary pointer name
> 067a9c8 nfs41: bulk rename of NFS4 xdr defines to NFS40
> 2731ffc nfs41: add minorversion arg to encode_compound_hdr
> 213c2b0 nfs41: client xdr definitions
> -> 3c9edb3 nfs41: nfs4_async_handle_error for data server
>
> client minorvers
> f6ea685 nfs41: add mount command option minorvers
> 9170414 nfs41: struct nfs_server minorversion
> 2842645 nfs41: set nfs_client rpc_ops based on minorversion
> 7b0e148 [FIXME] nfs41: set nfs4 rpc program based on
> minorversion
> squash -> 5c5737f [SQUASHME] nfs41: obliterate
> nfs4_setup_nfs4_program
> 02e2625 nfs41: sunrpc: support minorversion for
> rpc_clnt version table.
> 8ddcd3d nfs41: use ptr to rpc procedures via struct nfs_client
> ebdc038 nfs: pass recovery status from reclaimer
> kthread up to nfs4_wait_clnt_recover
> 049d209 nfs41: fallback to lower minorversion if
> nfs4_create_server fails
> da87e2f nfs41: Proper initialization of
> nfs_client_initdata.rpc_ops
>
> client ops infra
> 880c54d nfs41: nfsv4.1 xdr routines for nfsv4.0 operations
> 43175aa nfs41: stubs for nfs41 xdr routines
> 68366f2 nfs41: stubs for nfs41 procedures
> b93b8c5 nfs41: make nfs4_wait_bit_killable public
> -> 01e0b63 nfs41: introduce nfs4_call_sync
> * call to nfs4_recover_expired_lease doesn't belong here
>
> client sessions
> +> b09bdd3 nfs41: sessions client infrastructure
> squash -> 2a84b08 [SQUASHME] nfs41: remove unused
> struct nfs4_session fields
> f772d9e nfs41: session recovery infrastructure
> f5cd9d3 [FIXME] nfs41: lease renewal
> -> 249898c nfs41: call destroy session in nfs4_put_session
> -> 53c8a71 nfs41: kick start nfs41 session recovery
> when handling errors
> -> ba45a0b nfs41: limit the number of new session retrys
> -> 62fc10a nfs41: use rpc_call_validate_args to
> initiate session recovery from nfs4_call_sync
> -> 12aa5db nfs41: initialize a new session when cloning
> nfs_server
> -> 1770127 nfs41: add nfs_client pointer to struct nfs4_session
> -> cce7150 nfs41: schedule async session reset
> -> f187053 nfs41: handle state renewal errors
>
> client slot table
> 92931aa nfs41: slot table init and destroy
> dbdcec7 nfs41: find slot
> d6afbfb nfs41: free slot
>
> client sequence
> b952581 nfs41: setup_sequence method
> 48d02d0 nfs41: nfs41_sequence_done
> 7e18396 nfs41: nfs41_call_sync_done
> 1a54d7e nfs41: sequence setup/done support
>
> client exchange_id
> 228e131 nfs41: establish sessions-based clientid
> f798fbd nfs41: exchange_id operation
> 446b934 nfs41: introduce get_state_renewal_cred
> 68aad7d nfs41: get cred in exchange_id when cred arg is NULL
>
> client nfs41 semantics
> +> cc9a63f nfs41: send zero clientid for minorversion1
> open/lock ops.
> +> f9586f6 nfs41: increment_{open,lock}_seqid
>
> client ops
> 1569ffc nfs41: get_lease_time
> d082346 nfs41: create_session operation
> squash -> 237b10e [SQUASHME] nfs41: bump exchange_id
> session seq id only on success
> 4e20917 nfs41: destroy_session operation
> squash -> cdd61d2 [SQUASHME] nfs41: only call destroy
> session from put session
> squash -> 92949a5 [SQUASHME] nfs41: don't set flags in
> a destroyed session
> 0a44754 nfs41: sequence operation
>
> client backchannel infra
> 5724d5a nfs41: Add ability to read RPC call direction
> on TCP stream.
> 7baed6a nfs41: Refactor NFSv4 callback service
> 6bef055 nfs41: client callback structures
> dab245e nfs41: Initialize new rpc_xprt callback related fields
> 0b713d1 nfs41: New backchannel helper routines
> 20bd5dc nfs41: New include/linux/sunrpc/bc_xprt.h
> 374f315 nfs41: New xs_tcp_read_data()
> edf3afc nfs41: Add backchannel processing support to
> RPC state machine
> 113561c nfs41: Backchannel callback service helper routines
> b500053 nfs41: Refactor svc_process()
> 2160d10 nfs41: Backchannel bc_svc_process()
> ba1fb7a nfs41: Implement NFSv4.1 callback service process.
> 490718d nfs41: New backchannel support object files to
> sunrpc module.
> 1729f01 nfs41: Setup the backchannel
> 47b7b6d nfs41: sunrpc: provide functions to create and
> destroy a svc_xprt for backchannel use
> a7b1d6c nfs41: sunrpc: add a struct svc_xprt pointer to
> struct svc_serv for backchannel use
> 5bdd5e4 nfs41: create a svc_xprt for nfs41 callback
> thread and use for incoming callbacks
> c870fd8 nfs41: Add a reference to svc_serv during
> callback service bring up
> 3a0315c nfs41: Allow NFSv4 and NFSv4.1 callback
> services to coexist
> e856e1f nfs41: callback_svc needs to be set for v4 and
> v4.1 mounts
>
> client backchannel
> dd22e52 nfs41: Client indicates presence of NFSv4.1
> callback channel.
> 0d8552e nfs41: Get the rpc_xprt * from the rpc_rqst
> instead of the rpc_clnt.
> b2a88e4 nfs41: Release backchannel resources associated
> with session
> 3ffd8b6 nfs41: store minorversion in cb_compound_hdr_arg
> cd1b04d nfs41: decode minorversion 1 cb_compound header
> 1a7d4de nfs41: callback numbers definitions
> ba316b8 nfs41: consider minorversion in callback_xdr:process_op
> -> d2b1af8 nfs41: define CB_NOTIFY_DEVICEID as not supported
>
> client cb_sequence
> 131d788 nfs41: cb_sequence protocol level data structures
> be57f65 nfs41: cb_sequence proc implementation
> 6dfc3ad nfs41: cb_sequence xdr implementation
> 88fb859 nfs41: verify CB_SEQUENCE position in callback compound
>
> server patches
> --------------
>
> server infra
> da06142 nfsd41: Add Kconfig symbols for NFSv4.1
> 6a4b459 nfsd41: xdr stubs
> 01e9d1b nfsd41: proc stubs
> 4aa5349 [FIXME] nfsd41: server infrastructure
>
> server ops
> bd7f8fe nfsd41: exchange_id operation
> d70655c nfsd41: create_session operation
> af77533 nfsd41: destroy_session operation
> f5facf3 nfsd41: sequence operation
>
> server backchannel
> d0a6cf6 nfsd41: sunrpc: Added rpc server-side
> backchannel handling
> 1911ef1 nfsd41: callback infrastructure
>
> server cb ops
> 44291b5 nfsd41: cb_sequence callback
> 9a005d3 nfsd41: cb_recall callback
>
> server excl create
> 533de3a nfsd41: pass writable attrs mask to nfsd4_decode_fattr
> e491217 nfsd41: support for 3-word long attribute bitmask
> d00a173 nfsd41: SUPPATTR_EXCLCREAT attribute
> dfeca32 nfsd41: CREATE_EXCLUSIVE4_1
>
> _______________________________________________
> pNFS mailing list
> pNFS at linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs
>
More information about the pNFS
mailing list