diff options
author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-12-23 15:21:47 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-12-23 15:21:47 -0500 |
commit | 707fb4b324371f1b4bea5eb29e39d265c66086ae (patch) | |
tree | fdd11b731073e0eda3966390c263e31af9ef5a5d /fs/nfs/nfs4state.c | |
parent | 515d86117724abe39d7d57d7ccc7cc5c44480529 (diff) |
NFSv4: Clean up NFS4ERR_CB_PATH_DOWN error management...
Add a delegation cleanup phase to the state management loop, and do the
NFS4ERR_CB_PATH_DOWN recovery there.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4state.c')
-rw-r--r-- | fs/nfs/nfs4state.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index 3d78706b3efb..2894502b94dc 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c | |||
@@ -1027,7 +1027,7 @@ static void nfs4_recovery_handle_error(struct nfs_client *clp, int error) | |||
1027 | { | 1027 | { |
1028 | switch (error) { | 1028 | switch (error) { |
1029 | case -NFS4ERR_CB_PATH_DOWN: | 1029 | case -NFS4ERR_CB_PATH_DOWN: |
1030 | set_bit(NFS4CLNT_CB_PATH_DOWN, &clp->cl_state); | 1030 | nfs_handle_cb_pathdown(clp); |
1031 | break; | 1031 | break; |
1032 | case -NFS4ERR_STALE_CLIENTID: | 1032 | case -NFS4ERR_STALE_CLIENTID: |
1033 | case -NFS4ERR_LEASE_MOVED: | 1033 | case -NFS4ERR_LEASE_MOVED: |
@@ -1156,11 +1156,14 @@ static int reclaimer(void *ptr) | |||
1156 | nfs4_state_end_reclaim_nograce(clp); | 1156 | nfs4_state_end_reclaim_nograce(clp); |
1157 | continue; | 1157 | continue; |
1158 | } | 1158 | } |
1159 | |||
1160 | if (test_and_clear_bit(NFS4CLNT_DELEGRETURN, &clp->cl_state)) { | ||
1161 | nfs_client_return_marked_delegations(clp); | ||
1162 | continue; | ||
1163 | } | ||
1159 | break; | 1164 | break; |
1160 | } | 1165 | } |
1161 | out: | 1166 | out: |
1162 | if (test_and_clear_bit(NFS4CLNT_CB_PATH_DOWN, &clp->cl_state)) | ||
1163 | nfs_handle_cb_pathdown(clp); | ||
1164 | nfs4_clear_recover_bit(clp); | 1167 | nfs4_clear_recover_bit(clp); |
1165 | nfs_put_client(clp); | 1168 | nfs_put_client(clp); |
1166 | module_put_and_exit(0); | 1169 | module_put_and_exit(0); |