diff options
author | Ricardo Labiaga <Ricardo.Labiaga@netapp.com> | 2009-12-05 16:08:41 -0500 |
---|---|---|
committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2009-12-05 16:08:41 -0500 |
commit | fce5c838e13392cc88a1330d1471fe6419e02ed7 (patch) | |
tree | 9ba2d8a62d6ec61e68d5a2808ca50eb917acbea1 /fs/nfs/nfs4state.c | |
parent | 180197536b15d5862b389ce90b46ec8d004056f6 (diff) |
nfs41: RECLAIM_COMPLETE functionality
Implements RECLAIM_COMPLETE as an asynchronous RPC.
NFS4ERR_DELAY is retried, NFS4ERR_DEADSESSION invokes the error handling
but does not result in a retry, since we don't want to have a lingering
RECLAIM_COMPLETE call sent in the middle of a possible new state recovery
cycle. If a session reset occurs, a new wave of reclaim operations will
follow, containing their own RECLAIM_COMPLETE call. We don't want a
retry to get on the way of recovery by incorrectly indicating to the
server that we're done reclaiming state.
A subsequent patch invokes the functionality.
Signed-off-by: Ricardo Labiaga <Ricardo.Labiaga@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4state.c')
-rw-r--r-- | fs/nfs/nfs4state.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c index bc4ca6f4d8c6..f2d2dc497551 100644 --- a/fs/nfs/nfs4state.c +++ b/fs/nfs/nfs4state.c | |||
@@ -1032,6 +1032,14 @@ static void nfs4_state_start_reclaim_reboot(struct nfs_client *clp) | |||
1032 | nfs4_state_mark_reclaim_helper(clp, nfs4_state_mark_reclaim_reboot); | 1032 | nfs4_state_mark_reclaim_helper(clp, nfs4_state_mark_reclaim_reboot); |
1033 | } | 1033 | } |
1034 | 1034 | ||
1035 | static void nfs4_reclaim_complete(struct nfs_client *clp, | ||
1036 | const struct nfs4_state_recovery_ops *ops) | ||
1037 | { | ||
1038 | /* Notify the server we're done reclaiming our state */ | ||
1039 | if (ops->reclaim_complete) | ||
1040 | (void)ops->reclaim_complete(clp); | ||
1041 | } | ||
1042 | |||
1035 | static void nfs4_state_end_reclaim_reboot(struct nfs_client *clp) | 1043 | static void nfs4_state_end_reclaim_reboot(struct nfs_client *clp) |
1036 | { | 1044 | { |
1037 | struct nfs4_state_owner *sp; | 1045 | struct nfs4_state_owner *sp; |