summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSachin Prabhu2012-03-16 20:25:52 +0100
committerTrond Myklebust2012-03-17 16:17:42 +0100
commite49a29bd0eacce9d4956c4daf777a330115b369d (patch)
treee10e00806b44420f7cce9f43bf12c81fd5d898e3
parentNFSv4.1: Fix a few issues in filelayout_commit_pagelist (diff)
downloadkernel-qcow2-linux-e49a29bd0eacce9d4956c4daf777a330115b369d.tar.gz
kernel-qcow2-linux-e49a29bd0eacce9d4956c4daf777a330115b369d.tar.xz
kernel-qcow2-linux-e49a29bd0eacce9d4956c4daf777a330115b369d.zip
Try using machine credentials for RENEW calls
Using user credentials for RENEW calls will fail when the user credentials have expired. To avoid this, try using the machine credentials when making RENEW calls. If no machine credentials have been set, fall back to using user credentials as before. Signed-off-by: Sachin Prabhu <sprabhu@redhat.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--fs/nfs/nfs4state.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 119006b0815a..12b068f2ec91 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -146,6 +146,11 @@ struct rpc_cred *nfs4_get_renew_cred_locked(struct nfs_client *clp)
struct rpc_cred *cred = NULL;
struct nfs_server *server;
+ /* Use machine credentials if available */
+ cred = nfs4_get_machine_cred_locked(clp);
+ if (cred != NULL)
+ goto out;
+
rcu_read_lock();
list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link) {
cred = nfs4_get_renew_cred_server_locked(server);
@@ -153,6 +158,8 @@ struct rpc_cred *nfs4_get_renew_cred_locked(struct nfs_client *clp)
break;
}
rcu_read_unlock();
+
+out:
return cred;
}