diff options
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 18 |
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 */ | |||
71 | static struct nfs4_stateid * find_stateid(stateid_t *stid, int flags); | 71 | static struct nfs4_stateid * find_stateid(stateid_t *stid, int flags); |
72 | static struct nfs4_delegation * find_delegation_stateid(struct inode *ino, stateid_t *stid); | 72 | static struct nfs4_delegation * find_delegation_stateid(struct inode *ino, stateid_t *stid); |
73 | static void release_stateid_lockowners(struct nfs4_stateid *open_stp); | 73 | static void release_stateid_lockowners(struct nfs4_stateid *open_stp); |
74 | extern 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 | */ |
3094 | static int | 3095 | int |
3095 | nfs4_client_to_reclaim(char *name) | 3096 | nfs4_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 | ||
3206 | static void | ||
3207 | nfsd4_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 | ||
3207 | static void | 3219 | static 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 | ||