From 61ce1ad27b604a9d19f912b5ac3a5f92d3d0178a Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Mon, 20 Mar 2006 13:44:47 -0500 Subject: [PATCH] --- yaml --- r: 23939 b: refs/heads/master c: 51581f3bf922512880f52a7777923fd6dcfc792b h: refs/heads/master i: 23937: 191ba732e979f009f3a14055bd4c958d9d495860 23935: 219debd83b2ded8c4f3d158484c28c88ab093705 v: v3 --- [refs] | 2 +- trunk/fs/nfs/nfs4proc.c | 21 +++++++++++++++++++-- trunk/fs/nfs/nfs4state.c | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 2ff008926a67..450d7ceff559 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3e4f6290ca4df7464ee066123f2bca4298c2dab4 +refs/heads/master: 51581f3bf922512880f52a7777923fd6dcfc792b diff --git a/trunk/fs/nfs/nfs4proc.c b/trunk/fs/nfs/nfs4proc.c index 62aed077fc2a..31000326aba4 100644 --- a/trunk/fs/nfs/nfs4proc.c +++ b/trunk/fs/nfs/nfs4proc.c @@ -2849,8 +2849,7 @@ int nfs4_proc_setclientid(struct nfs4_client *clp, u32 program, unsigned short p return status; } -int -nfs4_proc_setclientid_confirm(struct nfs4_client *clp, struct rpc_cred *cred) +static int _nfs4_proc_setclientid_confirm(struct nfs4_client *clp, struct rpc_cred *cred) { struct nfs_fsinfo fsinfo; struct rpc_message msg = { @@ -2874,6 +2873,24 @@ nfs4_proc_setclientid_confirm(struct nfs4_client *clp, struct rpc_cred *cred) return status; } +int nfs4_proc_setclientid_confirm(struct nfs4_client *clp, struct rpc_cred *cred) +{ + long timeout; + int err; + do { + err = _nfs4_proc_setclientid_confirm(clp, cred); + switch (err) { + case 0: + return err; + case -NFS4ERR_RESOURCE: + /* The IBM lawyers misread another document! */ + case -NFS4ERR_DELAY: + err = nfs4_delay(clp->cl_rpcclient, &timeout); + } + } while (err == 0); + return err; +} + struct nfs4_delegreturndata { struct nfs4_delegreturnargs args; struct nfs4_delegreturnres res; diff --git a/trunk/fs/nfs/nfs4state.c b/trunk/fs/nfs/nfs4state.c index afad0255e7db..96e5b82c153b 100644 --- a/trunk/fs/nfs/nfs4state.c +++ b/trunk/fs/nfs/nfs4state.c @@ -977,6 +977,7 @@ static int reclaimer(void *ptr) out_error: printk(KERN_WARNING "Error: state recovery failed on NFSv4 server %u.%u.%u.%u with error %d\n", NIPQUAD(clp->cl_addr.s_addr), -status); + set_bit(NFS4CLNT_LEASE_EXPIRED, &clp->cl_state); goto out; }