summaryrefslogtreecommitdiff
path: root/fs/nfs
diff options
context:
space:
mode:
authorSachin Prabhu <sprabhu@redhat.com>2012-03-16 19:25:52 (GMT)
committerTrond Myklebust <Trond.Myklebust@netapp.com>2012-03-17 15:17:42 (GMT)
commite49a29bd0eacce9d4956c4daf777a330115b369d (patch)
treee10e00806b44420f7cce9f43bf12c81fd5d898e3 /fs/nfs
parent9390f42546339cf111edd23c16d6cf74ca41974c (diff)
downloadlinux-e49a29bd0eacce9d4956c4daf777a330115b369d.tar.xz
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>
Diffstat (limited to 'fs/nfs')
-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 119006b..12b068f 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;
}