Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29ab23cc authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd4: allow nfs4 state startup to fail



The failure here is pretty unlikely, but we should handle it anyway.

Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
parent 5d351754
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -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
+3 −1
Original line number Diff line number Diff line
@@ -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();

+2 −2
Original line number Diff line number Diff line
@@ -166,7 +166,7 @@ extern int nfsd_max_blksize;
extern unsigned int max_delegations;
int nfs4_state_init(void);
void nfsd4_free_slabs(void);
void nfs4_state_start(void);
int nfs4_state_start(void);
void nfs4_state_shutdown(void);
time_t nfs4_lease_time(void);
void nfs4_reset_lease(time_t leasetime);
@@ -174,7 +174,7 @@ int nfs4_reset_recoverydir(char *recdir);
#else
static inline int nfs4_state_init(void) { return 0; }
static inline void nfsd4_free_slabs(void) { }
static inline void nfs4_state_start(void) { }
static inline int nfs4_state_start(void) { }
static inline void nfs4_state_shutdown(void) { }
static inline time_t nfs4_lease_time(void) { return 0; }
static inline void nfs4_reset_lease(time_t leasetime) { }