Skip to content

RFC nfs41 client patches for review

Benny Halevy linux-nfs 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 RFC Latest85 patches 32 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/85sunrpc: get rid of rpc_rqst.rq_bufsizeinclude/linux/sunrpc/xprt.h+1 -22 replies
2/85nfs: return compound hdr.status when there are no op repliesfs/nfs/nfs4xdr.c+2 -00 replies
3/85nfs: remove incorrect usage of nfs4 compound response hdr.statusfs/nfs/nfs4xdr.c+0 -61 reply
4/85FIXME: NFS: Increment operation number in each encode_* routinefs/nfs/nfs4xdr.c+401 -2291 reply
5/85nfs41: Add Kconfig symbols for NFSv4.1fs/Kconfig+9 -01 reply
6/85nfs41: common protocol definitionsinclude/linux/nfs.h include/linux/nfs4.h+128 -31 reply
7/85nfs41: define NFS4_MAX_MINOR_VERSION based on CONFIG_NFS_V4_1include/linux/nfs4.h+7 -00 replies
8/85nfs41: client xdr definitionsinclude/linux/nfs_xdr.h+118 -01 reply
9/85nfs41: add mount command option minorversfs/nfs/internal.h fs/nfs/super.c+11 -01 reply
10/85nfs41: struct nfs_server minorversionfs/nfs/client.c include/linux/nfs_fs_sb.h+3 -01 reply
11/85nfs41: nfs_client.cl_minorversionfs/nfs/client.c include/linux/nfs_fs_sb.h+3 -11 reply
12/85nfs41: set nfs_client rpc_ops based on minorversionfs/nfs/client.c fs/nfs/nfs4proc.c include/linux/nfs_xdr.h+54 -40 replies
13/85nfs41: use ptr to rpc procedures via struct nfs_clientfs/nfs/internal.h fs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c +3 more+81 -471 reply
14/85nfs41: sunrpc: support minorversion for rpc_clnt version table.fs/nfs/client.c include/linux/nfs_xdr.h include/linux/sunrpc/clnt.h +1 more+34 -91 reply
15/85nfs41: Proper initialization of nfs_client_initdata.rpc_opsfs/nfs/client.c+2 -01 reply
16/85nfs41: pass recovery status from reclaimer kthread up to nfs4_wait_clnt_recoverfs/nfs/nfs4proc.c fs/nfs/nfs4state.c include/linux/nfs_fs_sb.h+7 -11 reply
17/85nfs41: fallback to lower minorversion if nfs4_create_server failsfs/nfs/client.c+11 -11 reply
18/85nfs41: sessions client infrastructurefs/nfs/client.c fs/nfs/internal.h fs/nfs/nfs4_fs.h +3 more+130 -01 reply
19/85nfs41: share client sessions across mountsfs/nfs/client.c fs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c+10 -01 reply
20/85nfs41: slot table init and destroyfs/nfs/nfs4proc.c include/linux/nfs4_session.h+105 -01 reply
21/85nfs41: find slotfs/nfs/nfs4proc.c include/linux/nfs4_session.h+93 -01 reply
22/85nfs41: free slotfs/nfs/nfs4proc.c+54 -01 reply
23/85nfs41: minorversion support for xdrfs/nfs/nfs4xdr.c include/linux/sunrpc/clnt.h net/sunrpc/clnt.c+471 -1741 reply
24/85nfs41: stubs for nfs41 proceduresfs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c+28 -00 replies
25/85nfs41: make nfs4_wait_bit_killable publicfs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c+2 -10 replies
26/85nfs41: introduce nfs4_call_syncfs/nfs/nfs4proc.c+96 -311 reply
27/85nfs41: nfs4_setup_sequencefs/nfs/nfs4proc.c include/linux/nfs_xdr.h+94 -11 reply
28/85nfs41: setup_sequence methodfs/nfs/nfs4proc.c include/linux/nfs_xdr.h+26 -20 replies
29/85nfs41: nfs41_sequence_donefs/nfs/nfs4proc.c include/linux/nfs_xdr.h+64 -01 reply
30/85nfs41: nfs41_call_sync_donefs/nfs/nfs4proc.c+18 -00 replies
31/85nfs41: separate free slot from sequence donefs/nfs/internal.h fs/nfs/nfs4proc.c fs/nfs/read.c +1 more+50 -90 replies
32/85nfs41: sequence setup/done supportfs/nfs/direct.c fs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c +4 more+152 -80 replies
33/85nfs41: Support sessions with O_DIRECT.fs/nfs/direct.c fs/nfs/internal.h+15 -00 replies
34/85nfs41: exchange_id operationfs/nfs/nfs4proc.c fs/nfs/nfs4xdr.c include/linux/nfs4.h +3 more+254 -20 replies
35/85nfs41: get_lease_timefs/nfs/nfs4proc.c fs/nfs/nfs4xdr.c+140 -00 replies
36/85nfs41: create_session operationfs/nfs/nfs4proc.c fs/nfs/nfs4xdr.c include/linux/nfs_xdr.h+350 -10 replies
37/85nfs41: destroy_session operationfs/nfs/nfs4proc.c fs/nfs/nfs4xdr.c fs/nfs/super.c+86 -10 replies
38/85nfs41: sequence operationfs/nfs/nfs4proc.c fs/nfs/nfs4xdr.c+201 -60 replies
39/85nfs41: session recovery infrastructurefs/nfs/Makefile fs/nfs/client.c fs/nfs/nfs41_session_recovery.c +2 more+242 -40 replies
40/85nfs41: schedule async session resetfs/nfs/nfs41_session_recovery.c fs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c +1 more+141 -110 replies
41/85nfs41: lease renewalfs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c fs/nfs/nfs4renewd.c +1 more+81 -160 replies
42/85nfs41: sunrpc: Export the call prepare state for session resetinclude/linux/sunrpc/clnt.h include/linux/sunrpc/sched.h net/sunrpc/clnt.c +1 more+16 -10 replies
43/85nfs41: use rpc prepare call state for session resetfs/nfs/internal.h fs/nfs/nfs4proc.c fs/nfs/read.c +2 more+24 -81 reply
44/85nfs41: kick start nfs41 session recovery when handling errorsfs/nfs/nfs4proc.c+71 -00 replies
45/85nfs41: start session recovery from nfs4_setup_sequencefs/nfs/nfs4proc.c+5 -20 replies
46/85nfs41: introduce get_state_renewal_credfs/nfs/client.c fs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c +3 more+36 -20 replies
47/85nfs41: get cred in exchange_id when cred arg is NULLfs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c fs/nfs/nfs4state.c+17 -40 replies
48/85nfs41: establish sessions-based clientidfs/nfs/nfs4_fs.h fs/nfs/nfs4proc.c fs/nfs/nfs4state.c+9 -20 replies
49/85nfs41: recover lease in _nfs4_lookup_rootfs/nfs/nfs4proc.c+4 -01 reply
50/85nfs41: schedule state recovery on BAD or DEAD sessionfs/nfs/nfs4proc.c+7 -00 replies
51/85nfs41: state reclaimer renew lease error handlingfs/nfs/nfs4state.c+13 -70 replies
52/85nfs41: increment_{open,lock}_seqidfs/nfs/nfs4proc.c fs/nfs/nfs4state.c+13 -50 replies
53/85nfs41: Add ability to read RPC call direction on TCP stream.net/sunrpc/xprtsock.c+45 -41 reply
54/85nfs41: Skip past the RPC call directionnet/sunrpc/clnt.c+7 -60 replies
55/85nfs41: Refactor NFSv4 callback servicefs/nfs/callback.c fs/nfs/callback.h fs/nfs/client.c+57 -300 replies
56/85nfs41: client callback structuresinclude/linux/sunrpc/svc.h include/linux/sunrpc/xprt.h+32 -00 replies
57/85nfs41: Initialize new rpc_xprt callback related fieldsnet/sunrpc/xprt.c+5 -00 replies
58/85nfs41: New backchannel helper routinesinclude/linux/sunrpc/xprt.h net/sunrpc/Makefile net/sunrpc/backchannel_rqst.c+270 -00 replies
59/85nfs41: New include/linux/sunrpc/bc_xprt.hinclude/linux/sunrpc/bc_xprt.h+40 -00 replies
60/85nfs41: New xs_tcp_read_data()net/sunrpc/xprtsock.c+121 -180 replies
61/85nfs41: Add backchannel processing support to RPC state machineinclude/linux/sunrpc/sched.h include/linux/sunrpc/xprt.h net/sunrpc/clnt.c +3 more+133 -101 reply
62/85nfs41: Backchannel callback service helper routinesinclude/linux/sunrpc/bc_xprt.h net/sunrpc/Makefile net/sunrpc/bc_svc.c +1 more+88 -10 replies
63/85FIXME: nfs41: sunrpc: handle clnt==NULL in call_statusnet/sunrpc/clnt.c+5 -30 replies
64/85nfs41: Refactor svc_process()fs/nfs/callback.c net/sunrpc/svc.c+55 -351 reply
65/85nfs41: Backchannel bc_svc_process()net/sunrpc/svc.c+49 -01 reply
66/85nfs41: Implement NFSv4.1 callback service process.fs/nfs/callback.c fs/nfs/callback.h include/linux/sunrpc/svc.h+85 -10 replies
67/85nfs41: sunrpc: provide functions to create and destroy a svc_xprt for backchannel useinclude/linux/sunrpc/svcsock.h net/sunrpc/svcsock.c+41 -00 replies
68/85nfs41: sunrpc: add a struct svc_xprt pointer to struct svc_serv for backchannel useinclude/linux/sunrpc/svc.h net/sunrpc/svc.c+5 -00 replies
69/85nfs41: create a svc_xprt for nfs41 callback thread and use for incoming callbacksfs/nfs/callback.c net/sunrpc/svc.c+17 -10 replies
70/85nfs41: save svc_serv in nfs_callback_infofs/nfs/callback.c+4 -00 replies
71/85nfs41: Add a reference to svc_serv during callback service bring upfs/nfs/callback.c+6 -10 replies
72/85nfs41: Allow NFSv4 and NFSv4.1 callback services to coexistfs/nfs/callback.c fs/nfs/callback.h fs/nfs/client.c+29 -320 replies
73/85nfs41: Setup the backchannelfs/nfs/client.c+8 -10 replies
74/85nfs41: Client indicates presence of NFSv4.1 callback channel.fs/nfs/nfs4proc.c+1 -10 replies
75/85nfs41: Get the rpc_xprt * from the rpc_rqst instead of the rpc_clnt.net/sunrpc/xprt.c+2 -20 replies
76/85nfs41: Release backchannel resources associated with sessionfs/nfs/nfs4proc.c fs/nfs/super.c+6 -10 replies
77/85nfs41: store minorversion in cb_compound_hdr_argfs/nfs/callback.h fs/nfs/callback_xdr.c+8 -50 replies
78/85nfs41: decode minorversion 1 cb_compound headerfs/nfs/callback.h fs/nfs/callback_xdr.c+8 -50 replies
79/85nfs41: callback numbers definitionsfs/nfs/callback.h+10 -00 replies
80/85nfs41: consider minorversion in callback_xdr:process_opfs/nfs/callback_xdr.c+50 -130 replies
81/85nfs41: define CB_NOTIFY_DEVICEID as not supportedfs/nfs/callback.h fs/nfs/callback_xdr.c+2 -00 replies
82/85nfs41: cb_sequence protocol level data structuresfs/nfs/callback.h+35 -00 replies
83/85nfs41: cb_sequence proc implementationfs/nfs/callback.h fs/nfs/callback_proc.c+34 -00 replies
84/85nfs41: cb_sequence xdr implementationfs/nfs/callback_xdr.c+189 -20 replies
85/85nfs41: verify CB_SEQUENCE position in callback compoundfs/nfs/callback_xdr.c+8 -00 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

Cover letter [RFC 0/85] nfs41 client patches for review

Trond,

Here's the patch series for nfs41 client side, rebased over 2.6.28 for review.

I've cleaned up the patch as much as I could in the given time frame but surely there's more work to be done.

I encourage others to comment on the patches as well.

Thanks,

Benny

pre-nfs41 patches:
[RFC 01/85] sunrpc: get rid of rpc_rqst.rq_bufsize
[RFC 02/85] nfs: return compound hdr.status when there are no op replies [RFC 03/85] nfs: remove incorrect usage of nfs4 compound response hdr.status [RFC 04/85] FIXME: NFS: Increment operation number in each encode_* routine

general defs:
[RFC 05/85] nfs41: Add Kconfig symbols for NFSv4.1
[RFC 06/85] nfs41: common protocol definitions
[RFC 07/85] nfs41: define NFS4_MAX_MINOR_VERSION based on CONFIG_NFS_V4_1 [RFC 08/85] nfs41: client xdr definitions

basic support for minorversion != 0:
[RFC 09/85] nfs41: add mount command option minorvers
[RFC 10/85] nfs41: struct nfs_server minorversion
[RFC 11/85] nfs41: nfs_client.cl_minorversion
[RFC 12/85] nfs41: set nfs_client rpc_ops based on minorversion
[RFC 13/85] nfs41: use ptr to rpc procedures via struct nfs_client
[RFC 14/85] nfs41: sunrpc: support minorversion for rpc_clnt version table. [RFC 15/85] nfs41: Proper initialization of nfs_client_initdata.rpc_ops
[RFC 16/85] nfs41: pass recovery status from reclaimer kthread up to nfs4_wait_clnt_recover [RFC 17/85] nfs41: fallback to lower minorversion if nfs4_create_server fails

sessions basic functionality:
[RFC 18/85] nfs41: sessions client infrastructure [RFC 19/85] nfs41: share client sessions across mounts [RFC 20/85] nfs41: slot table init and destroy [RFC 21/85] nfs41: find slot
[RFC 22/85] nfs41: free slot

support for sequence for legacy ops:
[RFC 23/85] nfs41: minorversion support for xdr [RFC 24/85] nfs41: stubs for nfs41 procedures [RFC 25/85] nfs41: make nfs4_wait_bit_killable public [RFC 26/85] nfs41: introduce nfs4_call_sync [RFC 27/85] nfs41: nfs4_setup_sequence
[RFC 28/85] nfs41: setup_sequence method
[RFC 29/85] nfs41: nfs41_sequence_done
[RFC 30/85] nfs41: nfs41_call_sync_done
[RFC 31/85] nfs41: separate free slot from sequence done [RFC 32/85] nfs41: sequence setup/done support [RFC 33/85] nfs41: Support sessions with O_DIRECT.

nfs41 ops:
[RFC 34/85] nfs41: exchange_id operation
[RFC 35/85] nfs41: get_lease_time
[RFC 36/85] nfs41: create_session operation
[RFC 37/85] nfs41: destroy_session operation
[RFC 38/85] nfs41: sequence operation

session setup and recovery:
[RFC 39/85] nfs41: session recovery infrastructure
[RFC 40/85] nfs41: schedule async session reset
[RFC 41/85] nfs41: lease renewal
[RFC 42/85] nfs41: sunrpc: Export the call prepare state for session reset [RFC 43/85] nfs41: use rpc prepare call state for session reset [RFC 44/85] nfs41: kick start nfs41 session recovery when handling errors [RFC 45/85] nfs41: start session recovery from nfs4_setup_sequence [RFC 46/85] nfs41: introduce get_state_renewal_cred
[RFC 47/85] nfs41: get cred in exchange_id when cred arg is NULL [RFC 48/85] nfs41: establish sessions-based clientid
[RFC 49/85] nfs41: recover lease in _nfs4_lookup_root
[RFC 50/85] nfs41: schedule state recovery on BAD or DEAD session [RFC 51/85] nfs41: state reclaimer renew lease error handling [RFC 52/85] nfs41: increment_{open,lock}_seqid

backchannel:
[RFC 53/85] nfs41: Add ability to read RPC call direction on TCP stream. [RFC 54/85] nfs41: Skip past the RPC call direction
[RFC 55/85] nfs41: Refactor NFSv4 callback service
[RFC 56/85] nfs41: client callback structures
[RFC 57/85] nfs41: Initialize new rpc_xprt callback related fields [RFC 58/85] nfs41: New backchannel helper routines
[RFC 59/85] nfs41: New include/linux/sunrpc/bc_xprt.h
[RFC 60/85] nfs41: New xs_tcp_read_data()
[RFC 61/85] nfs41: Add backchannel processing support to RPC state machine [RFC 62/85] nfs41: Backchannel callback service helper routines [RFC 63/85] FIXME: nfs41: sunrpc: handle clnt==NULL in call_status

callback service:
[RFC 64/85] nfs41: Refactor svc_process()
[RFC 65/85] nfs41: Backchannel bc_svc_process()
[RFC 66/85] nfs41: Implement NFSv4.1 callback service process.
[RFC 67/85] nfs41: sunrpc: provide functions to create and destroy a svc_xprt for backchannel use [RFC 68/85] nfs41: sunrpc: add a struct svc_xprt pointer to struct svc_serv for backchannel use [RFC 69/85] nfs41: create a svc_xprt for nfs41 callback thread and use for incoming callbacks [RFC 70/85] nfs41: save svc_serv in nfs_callback_info
[RFC 71/85] nfs41: Add a reference to svc_serv during callback service bring up [RFC 72/85] nfs41: Allow NFSv4 and NFSv4.1 callback services to coexist
[RFC 73/85] nfs41: Setup the backchannel
[RFC 74/85] nfs41: Client indicates presence of NFSv4.1 callback channel.
[RFC 75/85] nfs41: Get the rpc_xprt * from the rpc_rqst instead of the rpc_clnt. [RFC 76/85] nfs41: Release backchannel resources associated with session

callback processing:
[RFC 77/85] nfs41: store minorversion in cb_compound_hdr_arg [RFC 78/85] nfs41: decode minorversion 1 cb_compound header [RFC 79/85] nfs41: callback numbers definitions
[RFC 80/85] nfs41: consider minorversion in callback_xdr:process_op [RFC 81/85] nfs41: define CB_NOTIFY_DEVICEID as not supported [RFC 82/85] nfs41: cb_sequence protocol level data structures [RFC 83/85] nfs41: cb_sequence proc implementation
[RFC 84/85] nfs41: cb_sequence xdr implementation
[RFC 85/85] nfs41: verify CB_SEQUENCE position in callback compound