diff options
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); |