diff options
Diffstat (limited to 'fs/nfsd/state.h')
-rw-r--r-- | fs/nfsd/state.h | 47 |
1 files changed, 22 insertions, 25 deletions
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h index ffb5df1db94..89ab137d379 100644 --- a/fs/nfsd/state.h +++ b/fs/nfsd/state.h | |||
@@ -128,12 +128,14 @@ static inline struct nfs4_delegation *delegstateid(struct nfs4_stid *s) | |||
128 | (NFSD_CACHE_SIZE_SLOTS_PER_SESSION * NFSD_SLOT_CACHE_SIZE) | 128 | (NFSD_CACHE_SIZE_SLOTS_PER_SESSION * NFSD_SLOT_CACHE_SIZE) |
129 | 129 | ||
130 | struct nfsd4_slot { | 130 | struct nfsd4_slot { |
131 | bool sl_inuse; | ||
132 | bool sl_cachethis; | ||
133 | u16 sl_opcnt; | ||
134 | u32 sl_seqid; | 131 | u32 sl_seqid; |
135 | __be32 sl_status; | 132 | __be32 sl_status; |
136 | u32 sl_datalen; | 133 | u32 sl_datalen; |
134 | u16 sl_opcnt; | ||
135 | #define NFSD4_SLOT_INUSE (1 << 0) | ||
136 | #define NFSD4_SLOT_CACHETHIS (1 << 1) | ||
137 | #define NFSD4_SLOT_INITIALIZED (1 << 2) | ||
138 | u8 sl_flags; | ||
137 | char sl_data[]; | 139 | char sl_data[]; |
138 | }; | 140 | }; |
139 | 141 | ||
@@ -196,18 +198,7 @@ struct nfsd4_session { | |||
196 | struct nfsd4_slot *se_slots[]; /* forward channel slots */ | 198 | struct nfsd4_slot *se_slots[]; /* forward channel slots */ |
197 | }; | 199 | }; |
198 | 200 | ||
199 | static inline void | 201 | extern void nfsd4_put_session(struct nfsd4_session *ses); |
200 | nfsd4_put_session(struct nfsd4_session *ses) | ||
201 | { | ||
202 | extern void free_session(struct kref *kref); | ||
203 | kref_put(&ses->se_ref, free_session); | ||
204 | } | ||
205 | |||
206 | static inline void | ||
207 | nfsd4_get_session(struct nfsd4_session *ses) | ||
208 | { | ||
209 | kref_get(&ses->se_ref); | ||
210 | } | ||
211 | 202 | ||
212 | /* formatted contents of nfs4_sessionid */ | 203 | /* formatted contents of nfs4_sessionid */ |
213 | struct nfsd4_sessionid { | 204 | struct nfsd4_sessionid { |
@@ -245,14 +236,17 @@ struct nfs4_client { | |||
245 | struct svc_cred cl_cred; /* setclientid principal */ | 236 | struct svc_cred cl_cred; /* setclientid principal */ |
246 | clientid_t cl_clientid; /* generated by server */ | 237 | clientid_t cl_clientid; /* generated by server */ |
247 | nfs4_verifier cl_confirm; /* generated by server */ | 238 | nfs4_verifier cl_confirm; /* generated by server */ |
248 | u32 cl_firststate; /* recovery dir creation */ | ||
249 | u32 cl_minorversion; | 239 | u32 cl_minorversion; |
250 | 240 | ||
251 | /* for v4.0 and v4.1 callbacks: */ | 241 | /* for v4.0 and v4.1 callbacks: */ |
252 | struct nfs4_cb_conn cl_cb_conn; | 242 | struct nfs4_cb_conn cl_cb_conn; |
253 | #define NFSD4_CLIENT_CB_UPDATE 1 | 243 | #define NFSD4_CLIENT_CB_UPDATE (0) |
254 | #define NFSD4_CLIENT_KILL 2 | 244 | #define NFSD4_CLIENT_CB_KILL (1) |
255 | unsigned long cl_cb_flags; | 245 | #define NFSD4_CLIENT_STABLE (2) /* client on stable storage */ |
246 | #define NFSD4_CLIENT_RECLAIM_COMPLETE (3) /* reclaim_complete done */ | ||
247 | #define NFSD4_CLIENT_CB_FLAG_MASK (1 << NFSD4_CLIENT_CB_UPDATE | \ | ||
248 | 1 << NFSD4_CLIENT_CB_KILL) | ||
249 | unsigned long cl_flags; | ||
256 | struct rpc_clnt *cl_cb_client; | 250 | struct rpc_clnt *cl_cb_client; |
257 | u32 cl_cb_ident; | 251 | u32 cl_cb_ident; |
258 | #define NFSD4_CB_UP 0 | 252 | #define NFSD4_CB_UP 0 |
@@ -463,6 +457,8 @@ extern __be32 nfs4_preprocess_stateid_op(struct nfsd4_compound_state *cstate, | |||
463 | extern void nfs4_lock_state(void); | 457 | extern void nfs4_lock_state(void); |
464 | extern void nfs4_unlock_state(void); | 458 | extern void nfs4_unlock_state(void); |
465 | extern int nfs4_in_grace(void); | 459 | extern int nfs4_in_grace(void); |
460 | extern void nfs4_release_reclaim(void); | ||
461 | extern struct nfs4_client_reclaim *nfsd4_find_reclaim_client(struct nfs4_client *crp); | ||
466 | extern __be32 nfs4_check_open_reclaim(clientid_t *clid); | 462 | extern __be32 nfs4_check_open_reclaim(clientid_t *clid); |
467 | extern void nfs4_free_openowner(struct nfs4_openowner *); | 463 | extern void nfs4_free_openowner(struct nfs4_openowner *); |
468 | extern void nfs4_free_lockowner(struct nfs4_lockowner *); | 464 | extern void nfs4_free_lockowner(struct nfs4_lockowner *); |
@@ -477,16 +473,17 @@ extern void nfsd4_destroy_callback_queue(void); | |||
477 | extern void nfsd4_shutdown_callback(struct nfs4_client *); | 473 | extern void nfsd4_shutdown_callback(struct nfs4_client *); |
478 | extern void nfs4_put_delegation(struct nfs4_delegation *dp); | 474 | extern void nfs4_put_delegation(struct nfs4_delegation *dp); |
479 | extern __be32 nfs4_make_rec_clidname(char *clidname, struct xdr_netobj *clname); | 475 | extern __be32 nfs4_make_rec_clidname(char *clidname, struct xdr_netobj *clname); |
480 | extern void nfsd4_init_recdir(void); | ||
481 | extern int nfsd4_recdir_load(void); | ||
482 | extern void nfsd4_shutdown_recdir(void); | ||
483 | extern int nfs4_client_to_reclaim(const char *name); | 476 | extern int nfs4_client_to_reclaim(const char *name); |
484 | extern int nfs4_has_reclaimed_state(const char *name, bool use_exchange_id); | 477 | extern int nfs4_has_reclaimed_state(const char *name, bool use_exchange_id); |
485 | extern void nfsd4_recdir_purge_old(void); | ||
486 | extern void nfsd4_create_clid_dir(struct nfs4_client *clp); | ||
487 | extern void nfsd4_remove_clid_dir(struct nfs4_client *clp); | ||
488 | extern void release_session_client(struct nfsd4_session *); | 478 | extern void release_session_client(struct nfsd4_session *); |
489 | extern __be32 nfs4_validate_stateid(struct nfs4_client *, stateid_t *); | 479 | extern __be32 nfs4_validate_stateid(struct nfs4_client *, stateid_t *); |
490 | extern void nfsd4_purge_closed_stateid(struct nfs4_stateowner *); | 480 | extern void nfsd4_purge_closed_stateid(struct nfs4_stateowner *); |
491 | 481 | ||
482 | /* nfs4recover operations */ | ||
483 | extern int nfsd4_client_tracking_init(struct net *net); | ||
484 | extern void nfsd4_client_tracking_exit(struct net *net); | ||
485 | extern void nfsd4_client_record_create(struct nfs4_client *clp); | ||
486 | extern void nfsd4_client_record_remove(struct nfs4_client *clp); | ||
487 | extern int nfsd4_client_record_check(struct nfs4_client *clp); | ||
488 | extern void nfsd4_record_grace_done(struct net *net, time_t boot_time); | ||
492 | #endif /* NFSD4_STATE_H */ | 489 | #endif /* NFSD4_STATE_H */ |