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>
This commit is contained in:
@ -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
|
||||
|
@ -411,7 +411,9 @@ nfsd_svc(unsigned short port, int nrservs)
|
||||
error = nfsd_racache_init(2*nrservs);
|
||||
if (error<0)
|
||||
goto out;
|
||||
nfs4_state_start();
|
||||
error = nfs4_state_start();
|
||||
if (error)
|
||||
goto out;
|
||||
|
||||
nfsd_reset_versions();
|
||||
|
||||
|
Reference in New Issue
Block a user