diff options
Diffstat (limited to 'fs/nfs/nfs4state.c')
-rw-r--r-- | fs/nfs/nfs4state.c | 16 |
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 | ||
235 | struct 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 | |||
235 | static struct nfs4_state_owner * | 249 | static struct nfs4_state_owner * |
236 | nfs4_find_state_owner(struct nfs4_client *clp, struct rpc_cred *cred) | 250 | nfs4_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; |
901 | restart_loop: | 915 | restart_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: |