From: Yan, Zheng Date: Sun, 17 Nov 2013 10:32:23 +0000 (+0800) Subject: mds: avoid allocating MDRequest::More when cleanup request X-Git-Tag: v0.75~93^2~18 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=f134c77267469fdf1d1be0865fe9f61bdf726913;p=ceph.git mds: avoid allocating MDRequest::More when cleanup request Signed-off-by: Yan, Zheng --- diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 37963779416e..27bd9b0df93a 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -8640,7 +8640,7 @@ void MDCache::request_finish(MDRequest *mdr) dout(7) << "request_finish " << *mdr << dendl; // slave finisher? - if (mdr->more()->slave_commit) { + if (mdr->has_more() && mdr->more()->slave_commit) { Context *fin = mdr->more()->slave_commit; mdr->more()->slave_commit = 0; fin->complete(0); // this must re-call request_finish. @@ -8691,6 +8691,9 @@ void MDCache::dispatch_request(MDRequest *mdr) void MDCache::request_drop_foreign_locks(MDRequest *mdr) { + if (!mdr->has_more()) + return; + // clean up slaves // (will implicitly drop remote dn pins) for (set::iterator p = mdr->more()->slaves.begin();