aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4state.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/nfs/nfs4state.c')
-rw-r--r--fs/nfs/nfs4state.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index f2148376f1a7..18f6ed1a0b54 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -232,6 +232,20 @@ nfs4_client_grab_unused(struct nfs4_client *clp, struct rpc_cred *cred)
232 return sp; 232 return sp;
233} 233}
234 234
235struct rpc_cred *nfs4_get_renew_cred(struct nfs4_client *clp)
236{
237 struct nfs4_state_owner *sp;
238 struct rpc_cred *cred = NULL;
239
240 list_for_each_entry(sp, &clp->cl_state_owners, so_list) {
241 if (list_empty(&sp->so_states))
242 continue;
243 cred = get_rpccred(sp->so_cred);
244 break;
245 }
246 return cred;
247}
248
235static struct nfs4_state_owner * 249static struct nfs4_state_owner *
236nfs4_find_state_owner(struct nfs4_client *clp, struct rpc_cred *cred) 250nfs4_find_state_owner(struct nfs4_client *clp, struct rpc_cred *cred)
237{ 251{
@@ -899,7 +913,7 @@ static int reclaimer(void *ptr)
899 if (list_empty(&clp->cl_superblocks)) 913 if (list_empty(&clp->cl_superblocks))
900 goto out; 914 goto out;
901restart_loop: 915restart_loop:
902 status = nfs4_proc_renew(clp); 916 status = nfs4_proc_renew(clp, clp->cl_cred);
903 switch (status) { 917 switch (status) {
904 case 0: 918 case 0:
905 case -NFS4ERR_CB_PATH_DOWN: 919 case -NFS4ERR_CB_PATH_DOWN: