diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-14 16:17:26 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-14 16:17:26 -0500 |
commit | 18bce371ae09af6c20ee62c1092a4d1d0e84dd49 (patch) | |
tree | f3467fafd8e49392e3f6efef7b88a7b4dd3b7b06 /fs/nfsd/state.h | |
parent | ec08bdb148767f1193f5f3028749ed865ac27181 (diff) | |
parent | a8f2800b4f7b76cecb7209cb6a7d2b14904fc711 (diff) |
Merge branch 'for-2.6.38' of git://linux-nfs.org/~bfields/linux
* 'for-2.6.38' of git://linux-nfs.org/~bfields/linux: (62 commits)
nfsd4: fix callback restarting
nfsd: break lease on unlink, link, and rename
nfsd4: break lease on nfsd setattr
nfsd: don't support msnfs export option
nfsd4: initialize cb_per_client
nfsd4: allow restarting callbacks
nfsd4: simplify nfsd4_cb_prepare
nfsd4: give out delegations more quickly in 4.1 case
nfsd4: add helper function to run callbacks
nfsd4: make sure sequence flags are set after destroy_session
nfsd4: re-probe callback on connection loss
nfsd4: set sequence flag when backchannel is down
nfsd4: keep finer-grained callback status
rpc: allow xprt_class->setup to return a preexisting xprt
rpc: keep backchannel xprt as long as server connection
rpc: move sk_bc_xprt to svc_xprt
nfsd4: allow backchannel recovery
nfsd4: support BIND_CONN_TO_SESSION
nfsd4: modify session list under cl_lock
Documentation: fl_mylease no longer exists
...
Fix up conflicts in fs/nfsd/vfs.c with the vfs-scale work. The
vfs-scale work touched some msnfs cases, and this merge removes support
for that entirely, so the conflict was trivial to resolve.
Diffstat (limited to 'fs/nfsd/state.h')
-rw-r--r-- | fs/nfsd/state.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h index 39adc27b0685..3074656ba7bf 100644 --- a/fs/nfsd/state.h +++ b/fs/nfsd/state.h | |||
@@ -68,10 +68,12 @@ typedef struct { | |||
68 | struct nfsd4_callback { | 68 | struct nfsd4_callback { |
69 | void *cb_op; | 69 | void *cb_op; |
70 | struct nfs4_client *cb_clp; | 70 | struct nfs4_client *cb_clp; |
71 | struct list_head cb_per_client; | ||
71 | u32 cb_minorversion; | 72 | u32 cb_minorversion; |
72 | struct rpc_message cb_msg; | 73 | struct rpc_message cb_msg; |
73 | const struct rpc_call_ops *cb_ops; | 74 | const struct rpc_call_ops *cb_ops; |
74 | struct work_struct cb_work; | 75 | struct work_struct cb_work; |
76 | bool cb_done; | ||
75 | }; | 77 | }; |
76 | 78 | ||
77 | struct nfs4_delegation { | 79 | struct nfs4_delegation { |
@@ -81,6 +83,7 @@ struct nfs4_delegation { | |||
81 | atomic_t dl_count; /* ref count */ | 83 | atomic_t dl_count; /* ref count */ |
82 | struct nfs4_client *dl_client; | 84 | struct nfs4_client *dl_client; |
83 | struct nfs4_file *dl_file; | 85 | struct nfs4_file *dl_file; |
86 | struct file *dl_vfs_file; | ||
84 | struct file_lock *dl_flock; | 87 | struct file_lock *dl_flock; |
85 | u32 dl_type; | 88 | u32 dl_type; |
86 | time_t dl_time; | 89 | time_t dl_time; |
@@ -95,6 +98,7 @@ struct nfs4_delegation { | |||
95 | struct nfs4_cb_conn { | 98 | struct nfs4_cb_conn { |
96 | /* SETCLIENTID info */ | 99 | /* SETCLIENTID info */ |
97 | struct sockaddr_storage cb_addr; | 100 | struct sockaddr_storage cb_addr; |
101 | struct sockaddr_storage cb_saddr; | ||
98 | size_t cb_addrlen; | 102 | size_t cb_addrlen; |
99 | u32 cb_prog; /* used only in 4.0 case; | 103 | u32 cb_prog; /* used only in 4.0 case; |
100 | per-session otherwise */ | 104 | per-session otherwise */ |
@@ -146,6 +150,11 @@ struct nfsd4_create_session { | |||
146 | u32 gid; | 150 | u32 gid; |
147 | }; | 151 | }; |
148 | 152 | ||
153 | struct nfsd4_bind_conn_to_session { | ||
154 | struct nfs4_sessionid sessionid; | ||
155 | u32 dir; | ||
156 | }; | ||
157 | |||
149 | /* The single slot clientid cache structure */ | 158 | /* The single slot clientid cache structure */ |
150 | struct nfsd4_clid_slot { | 159 | struct nfsd4_clid_slot { |
151 | u32 sl_seqid; | 160 | u32 sl_seqid; |
@@ -235,9 +244,13 @@ struct nfs4_client { | |||
235 | unsigned long cl_cb_flags; | 244 | unsigned long cl_cb_flags; |
236 | struct rpc_clnt *cl_cb_client; | 245 | struct rpc_clnt *cl_cb_client; |
237 | u32 cl_cb_ident; | 246 | u32 cl_cb_ident; |
238 | atomic_t cl_cb_set; | 247 | #define NFSD4_CB_UP 0 |
248 | #define NFSD4_CB_UNKNOWN 1 | ||
249 | #define NFSD4_CB_DOWN 2 | ||
250 | int cl_cb_state; | ||
239 | struct nfsd4_callback cl_cb_null; | 251 | struct nfsd4_callback cl_cb_null; |
240 | struct nfsd4_session *cl_cb_session; | 252 | struct nfsd4_session *cl_cb_session; |
253 | struct list_head cl_callbacks; /* list of in-progress callbacks */ | ||
241 | 254 | ||
242 | /* for all client information that callback code might need: */ | 255 | /* for all client information that callback code might need: */ |
243 | spinlock_t cl_lock; | 256 | spinlock_t cl_lock; |
@@ -454,6 +467,7 @@ extern __be32 nfs4_check_open_reclaim(clientid_t *clid); | |||
454 | extern void nfs4_free_stateowner(struct kref *kref); | 467 | extern void nfs4_free_stateowner(struct kref *kref); |
455 | extern int set_callback_cred(void); | 468 | extern int set_callback_cred(void); |
456 | extern void nfsd4_probe_callback(struct nfs4_client *clp); | 469 | extern void nfsd4_probe_callback(struct nfs4_client *clp); |
470 | extern void nfsd4_probe_callback_sync(struct nfs4_client *clp); | ||
457 | extern void nfsd4_change_callback(struct nfs4_client *clp, struct nfs4_cb_conn *); | 471 | extern void nfsd4_change_callback(struct nfs4_client *clp, struct nfs4_cb_conn *); |
458 | extern void nfsd4_do_callback_rpc(struct work_struct *); | 472 | extern void nfsd4_do_callback_rpc(struct work_struct *); |
459 | extern void nfsd4_cb_recall(struct nfs4_delegation *dp); | 473 | extern void nfsd4_cb_recall(struct nfs4_delegation *dp); |