diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2016-02-12 05:07:19 +0100 |
---|---|---|
committer | Mike Marshall <hubcap@omnibond.com> | 2016-02-19 19:45:53 +0100 |
commit | 78699e29fd784a4613d254a22627f336c55c4a76 (patch) | |
tree | c3a8d93a89dd7abed775cdd27a9349cbbd0e539c /fs/orangefs/orangefs-mod.c | |
parent | get rid of bufmap argument of orangefs_bufmap_put() (diff) | |
download | linux-78699e29fd784a4613d254a22627f336c55c4a76.tar.xz linux-78699e29fd784a4613d254a22627f336c55c4a76.zip |
orangefs: delay freeing slot until cancel completes
Make cancels reuse the aborted read/write op, to make sure they do not
fail on lack of memory.
Don't issue a cancel unless the daemon has seen our read/write, has not
replied and isn't being shut down.
If cancel *is* issued, don't wait for it to complete; stash the slot
in there and just have it freed when cancel is finally replied to or
purged (and delay dropping the reference until then, obviously).
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
Diffstat (limited to 'fs/orangefs/orangefs-mod.c')
-rw-r--r-- | fs/orangefs/orangefs-mod.c | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/fs/orangefs/orangefs-mod.c b/fs/orangefs/orangefs-mod.c index 7639ab2df711..965959cb11d1 100644 --- a/fs/orangefs/orangefs-mod.c +++ b/fs/orangefs/orangefs-mod.c @@ -260,14 +260,12 @@ void purge_inprogress_ops(void) next, &htable_ops_in_progress[i], list) { - spin_lock(&op->lock); gossip_debug(GOSSIP_INIT_DEBUG, "pvfs2-client-core: purging in-progress op tag " "%llu %s\n", llu(op->tag), get_opname_string(op)); set_op_state_purged(op); - spin_unlock(&op->lock); } spin_unlock(&htable_ops_in_progress_lock); } |