diff options
author | J. Bruce Fields <bfields@citi.umich.edu> | 2009-09-15 19:56:50 (GMT) |
---|---|---|
committer | J. Bruce Fields <bfields@citi.umich.edu> | 2009-09-16 00:49:33 (GMT) |
commit | 29ab23cc5d351658d01a4327d55e9106a73fd04f (patch) | |
tree | 8df00000a93e783f4bc152c20a437338a4f57fde /fs/nfsd/nfs4state.c | |
parent | 5d351754fcf58d1a604aa7cf95c2805e8a098ad9 (diff) | |
download | linux-29ab23cc5d351658d01a4327d55e9106a73fd04f.tar.xz |
nfsd4: allow nfs4 state startup to fail
The failure here is pretty unlikely, but we should handle it anyway.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 46e9ac5..11db40c 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -4004,7 +4004,7 @@ set_max_delegations(void) /* initialization to perform when the nfsd service is started: */ -static void +static int __nfs4_state_start(void) { unsigned long grace_time; @@ -4016,19 +4016,26 @@ __nfs4_state_start(void) printk(KERN_INFO "NFSD: starting %ld-second grace period\n", grace_time/HZ); laundry_wq = create_singlethread_workqueue("nfsd4"); + if (laundry_wq == NULL) + return -ENOMEM; queue_delayed_work(laundry_wq, &laundromat_work, grace_time); set_max_delegations(); + return 0; } -void +int nfs4_state_start(void) { + int ret; + if (nfs4_init) - return; + return 0; nfsd4_load_reboot_recovery_data(); - __nfs4_state_start(); + ret = __nfs4_state_start(); + if (ret) + return ret; nfs4_init = 1; - return; + return 0; } time_t |