summaryrefslogtreecommitdiff
path: root/fs/nfs/nfs4state.c
diff options
context:
space:
mode:
authorJeff Layton <jlayton@redhat.com>2010-01-07 09:42:03 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2010-02-10 08:30:50 -0500
commit2c6434888cef9e5f450d6c5b7df6d8c625ed27c1 (patch)
treee27b7cbd25ec699c9c8c85f9405ef039e57c659a /fs/nfs/nfs4state.c
parentdc5ddce956660247e004a4b20a26b7d137ab1644 (diff)
downloadlwn-2c6434888cef9e5f450d6c5b7df6d8c625ed27c1.tar.gz
lwn-2c6434888cef9e5f450d6c5b7df6d8c625ed27c1.zip
nfs4: handle -EKEYEXPIRED errors from RPC layer
If a KRB5 TGT ticket expires, we don't want to return an error immediatel. If someone has a long running job and just forgets to run "kinit" in time then this will make it fail. Instead, we want to treat this situation as we would NFS4ERR_DELAY and retry the upcall after delaying a bit with an exponential backoff. This patch just makes any place that would handle NFS4ERR_DELAY also handle -EKEYEXPIRED the same way. In the future, we may want to be more sophisticated however and handle hard vs. soft mounts differently, or specify some upper limit on how long we'll wait for a new TGT to be acquired. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4state.c')
-rw-r--r--fs/nfs/nfs4state.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index c1e2733f4fa4..8406cacd3240 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -1314,6 +1314,7 @@ static void nfs4_set_lease_expired(struct nfs_client *clp, int status)
case -NFS4ERR_DELAY:
case -NFS4ERR_CLID_INUSE:
case -EAGAIN:
+ case -EKEYEXPIRED:
break;
case -NFS4ERR_NOT_SAME: /* FixMe: implement recovery