summaryrefslogtreecommitdiffstats
path: root/fs/nfs
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2013-01-18 23:01:43 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2013-01-27 15:51:41 -0500
commit65436ec0c8e344d9b23302b686e418f2a7b7cf7b (patch)
treef19617b6b7a8885f81c45c825dbaab580b3c6f19 /fs/nfs
parent202c312dba7d95b96493b412c606163a0cd83984 (diff)
downloadlinux-65436ec0c8e344d9b23302b686e418f2a7b7cf7b.tar.bz2
NFSv4.1: Ensure that nfs41_walk_client_list() does start lease recovery
We do need to start the lease recovery thread prior to waiting for the client initialisation to complete in NFSv4.1. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> Cc: Chuck Lever <chuck.lever@oracle.com> Cc: Ben Greear <greearb@candelatech.com> Cc: stable@vger.kernel.org [>=3.7]
Diffstat (limited to 'fs/nfs')
-rw-r--r--fs/nfs/nfs4client.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
index 2f21f17fb16c..2e9779b58b7a 100644
--- a/fs/nfs/nfs4client.c
+++ b/fs/nfs/nfs4client.c
@@ -440,14 +440,17 @@ int nfs41_walk_client_list(struct nfs_client *new,
nfs_put_client(prev);
prev = pos;
+ nfs4_schedule_lease_recovery(pos);
status = nfs_wait_client_init_complete(pos);
if (status < 0) {
nfs_put_client(pos);
spin_lock(&nn->nfs_client_lock);
continue;
}
-
+ status = pos->cl_cons_state;
spin_lock(&nn->nfs_client_lock);
+ if (status < 0)
+ continue;
}
if (pos->rpc_ops != new->rpc_ops)