Commit b4e4f669 authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4.x: Fail client initialisation if state manager thread can't run



If the state manager thread fails to start, then we should just mark the
client initialisation as failed so that other processes or threads don't
get stuck in nfs_wait_client_init_complete().

Reported-by: default avatarChenXiaoSong <chenxiaosong2@huawei.com>
Fixes: 4697bd5e ("NFSv4: Fix a race in the net namespace mount notification")
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 19cdc8fa
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -1230,6 +1230,8 @@ void nfs4_schedule_state_manager(struct nfs_client *clp)
	if (IS_ERR(task)) {
	if (IS_ERR(task)) {
		printk(KERN_ERR "%s: kthread_run: %ld\n",
		printk(KERN_ERR "%s: kthread_run: %ld\n",
			__func__, PTR_ERR(task));
			__func__, PTR_ERR(task));
		if (!nfs_client_init_is_complete(clp))
			nfs_mark_client_ready(clp, PTR_ERR(task));
		nfs4_clear_state_manager_bit(clp);
		nfs4_clear_state_manager_bit(clp);
		clear_bit(NFS4CLNT_MANAGER_AVAILABLE, &clp->cl_state);
		clear_bit(NFS4CLNT_MANAGER_AVAILABLE, &clp->cl_state);
		nfs_put_client(clp);
		nfs_put_client(clp);