aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd/nfs4state.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r--fs/nfsd/nfs4state.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 0b47a97e953d..6b9d23c39afe 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -71,6 +71,7 @@ static stateid_t onestateid; /* bits all 1 */
71static struct nfs4_stateid * find_stateid(stateid_t *stid, int flags); 71static struct nfs4_stateid * find_stateid(stateid_t *stid, int flags);
72static struct nfs4_delegation * find_delegation_stateid(struct inode *ino, stateid_t *stid); 72static struct nfs4_delegation * find_delegation_stateid(struct inode *ino, stateid_t *stid);
73static void release_stateid_lockowners(struct nfs4_stateid *open_stp); 73static void release_stateid_lockowners(struct nfs4_stateid *open_stp);
74extern char recovery_dirname[];
74 75
75/* Locking: 76/* Locking:
76 * 77 *
@@ -3091,8 +3092,8 @@ alloc_reclaim(void)
3091/* 3092/*
3092 * failure => all reset bets are off, nfserr_no_grace... 3093 * failure => all reset bets are off, nfserr_no_grace...
3093 */ 3094 */
3094static int 3095int
3095nfs4_client_to_reclaim(char *name) 3096nfs4_client_to_reclaim(const char *name)
3096{ 3097{
3097 unsigned int strhashval; 3098 unsigned int strhashval;
3098 struct nfs4_client_reclaim *crp = NULL; 3099 struct nfs4_client_reclaim *crp = NULL;
@@ -3202,6 +3203,17 @@ nfs4_state_init(void)
3202 reclaim_str_hashtbl_size = 0; 3203 reclaim_str_hashtbl_size = 0;
3203} 3204}
3204 3205
3206static void
3207nfsd4_load_reboot_recovery_data(void)
3208{
3209 int status;
3210
3211 nfsd4_init_recdir(recovery_dirname);
3212 status = nfsd4_recdir_load();
3213 if (status)
3214 printk("NFSD: Failure reading reboot recovery data\n");
3215}
3216
3205/* initialization to perform when the nfsd service is started: */ 3217/* initialization to perform when the nfsd service is started: */
3206 3218
3207static void 3219static void
@@ -3228,6 +3240,7 @@ nfs4_state_start(void)
3228 status = nfsd4_init_slabs(); 3240 status = nfsd4_init_slabs();
3229 if (status) 3241 if (status)
3230 return status; 3242 return status;
3243 nfsd4_load_reboot_recovery_data();
3231 __nfs4_state_start(); 3244 __nfs4_state_start();
3232 nfs4_init = 1; 3245 nfs4_init = 1;
3233 return 0; 3246 return 0;
@@ -3286,6 +3299,7 @@ __nfs4_state_shutdown(void)
3286 cancel_delayed_work(&laundromat_work); 3299 cancel_delayed_work(&laundromat_work);
3287 flush_workqueue(laundry_wq); 3300 flush_workqueue(laundry_wq);
3288 destroy_workqueue(laundry_wq); 3301 destroy_workqueue(laundry_wq);
3302 nfsd4_shutdown_recdir();
3289 nfs4_init = 0; 3303 nfs4_init = 0;
3290} 3304}
3291 3305