diff options
author | Andy Adamson <andros@netapp.com> | 2009-04-01 09:22:17 -0400 |
---|---|---|
committer | Benny Halevy <bhalevy@panasas.com> | 2009-06-17 13:46:41 -0400 |
commit | 13615871cdf8e8263626a817c350c6978a6483fe (patch) | |
tree | 267069d5067c55d10c2a7b4e02dc5a03243f9967 /fs/nfs/internal.h | |
parent | e2c4ab3ce2ecc527672bd7e29a594c50d3ec0477 (diff) |
nfs41: nfs41_sequence_free_slot
[from nfs41: separate free slot from sequence done]
Don't free the slot until after all rpc_restart_calls have completed.
Session reset will require more work.
As noted by Trond, since we're using rpc_wake_up_next rather than
rpc_wake_up() we must always wake up the next task in the queue
either by going through nfs4_free_slot, or just calling
rpc_wake_up_next if no slot is to be freed.
[nfs41: sequence res use slotid]
[nfs41: remove SEQ4_STATUS_USE_TK_STATUS]
[got rid of nfs4_sequence_res.sr_session, use nfs_client.cl_session instead]
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
[nfs41: rpc_wake_up_next if sessions slot was not consumed.]
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
[nfs41: nfs4_sequence_free_slot use nfs_client for data server]
Signed-off-by: Andy Adamson <andros@netapp.com>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/internal.h')
-rw-r--r-- | fs/nfs/internal.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/nfs/internal.h b/fs/nfs/internal.h index 8d67c2865dc3..12f4c5e6fd39 100644 --- a/fs/nfs/internal.h +++ b/fs/nfs/internal.h | |||
@@ -230,6 +230,20 @@ static inline int nfs4_has_session(const struct nfs_client *clp) | |||
230 | return 0; | 230 | return 0; |
231 | } | 231 | } |
232 | 232 | ||
233 | #ifdef CONFIG_NFS_V4_1 | ||
234 | extern void nfs41_sequence_free_slot(const struct nfs_client *, | ||
235 | struct nfs4_sequence_res *res); | ||
236 | #endif /* CONFIG_NFS_V4_1 */ | ||
237 | |||
238 | static inline void nfs4_sequence_free_slot(const struct nfs_client *clp, | ||
239 | struct nfs4_sequence_res *res) | ||
240 | { | ||
241 | #ifdef CONFIG_NFS_V4_1 | ||
242 | if (nfs4_has_session(clp)) | ||
243 | nfs41_sequence_free_slot(clp, res); | ||
244 | #endif /* CONFIG_NFS_V4_1 */ | ||
245 | } | ||
246 | |||
233 | /* | 247 | /* |
234 | * Determine the device name as a string | 248 | * Determine the device name as a string |
235 | */ | 249 | */ |