]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: avoid allocating MDRequest::More when cleanup request
authorYan, Zheng <zheng.z.yan@intel.com>
Sun, 17 Nov 2013 10:32:23 +0000 (18:32 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Mon, 16 Dec 2013 04:15:24 +0000 (12:15 +0800)
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/MDCache.cc

index 37963779416ea978d247f5a0797c3d29de87acdb..27bd9b0df93a5f094a2dbc65bd5ff658bc1598e7 100644 (file)
@@ -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<int>::iterator p = mdr->more()->slaves.begin();