diff options
-rw-r--r-- | src/mds/MDCache.cc | 10 | ||||
-rw-r--r-- | src/mds/Mutation.h | 5 |
2 files changed, 8 insertions, 7 deletions
diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 2ab85808e7e..5f0ba16defd 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -7488,12 +7488,11 @@ void MDCache::request_forward(MDRequest *mdr, int who, int port) void MDCache::dispatch_request(MDRequest *mdr) { + if (mdr->killed) { + dout(10) << "request " << *mdr << " was killed" << dendl; + return; + } if (mdr->client_request) { - if (!mdr->reqid.name.is_mds() && - !mdr->item_session_request.is_on_list()) { - dout(10) << "request " << *mdr << " is canceled" << dendl; - return; - } mds->server->dispatch_client_request(mdr); } else if (mdr->slave_request) { mds->server->dispatch_slave_request(mdr); @@ -7605,6 +7604,7 @@ void MDCache::request_cleanup(MDRequest *mdr) void MDCache::request_kill(MDRequest *mdr) { + mdr->killed = true; if (!mdr->committing) { dout(10) << "request_kill " << *mdr << dendl; request_cleanup(mdr); diff --git a/src/mds/Mutation.h b/src/mds/Mutation.h index ca5ee963a91..cba6223864e 100644 --- a/src/mds/Mutation.h +++ b/src/mds/Mutation.h @@ -67,6 +67,7 @@ struct Mutation { bool done_locking; bool committing; bool aborted; + bool killed; // for applying projected inode changes list<CInode*> projected_inodes; @@ -81,13 +82,13 @@ struct Mutation { ls(0), slave_to_mds(-1), locking(NULL), - done_locking(false), committing(false), aborted(false) { } + done_locking(false), committing(false), aborted(false), killed(false) { } Mutation(metareqid_t ri, __u32 att=0, int slave_to=-1) : reqid(ri), attempt(att), ls(0), slave_to_mds(slave_to), locking(NULL), - done_locking(false), committing(false), aborted(false) { } + done_locking(false), committing(false), aborted(false), killed(false) { } virtual ~Mutation() { assert(locking == NULL); assert(pins.empty()); |