]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: fix CDir::merge() for mds_debug_auth_pins 15130/head
authorYan, Zheng <zyan@redhat.com>
Wed, 17 May 2017 09:01:05 +0000 (17:01 +0800)
committerYan, Zheng <zyan@redhat.com>
Wed, 17 May 2017 09:01:05 +0000 (17:01 +0800)
Fixes: http://tracker.ceph.com/issues/19946
Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
src/mds/CDir.cc
src/mds/MDCache.cc

index 03ba644631ecc431eb02faaaea934d8de42a9db0..04d3747344add30068fba86bbe93baab1321ad3d 100644 (file)
@@ -863,6 +863,7 @@ void CDir::prepare_new_fragment(bool replay)
     _freeze_dir();
     mark_complete();
   }
+  inode->add_dirfrag(this);
 }
 
 void CDir::finish_old_fragment(list<MDSInternalContextBase*>& waiters, bool replay)
@@ -966,7 +967,6 @@ void CDir::split(int bits, list<CDir*>& subs, list<MDSInternalContextBase*>& wai
     dout(10) << " subfrag " << *p << " " << *f << dendl;
     subfrags[n++] = f;
     subs.push_back(f);
-    inode->add_dirfrag(f);
 
     f->set_dir_auth(get_dir_auth());
     f->prepare_new_fragment(replay);
index 8f0ca76accb298a1b8f63a9b203b88afcf1bd794..ed6d9938e344397458306c685368d9df7c175509 100644 (file)
@@ -10695,7 +10695,6 @@ void MDCache::adjust_dir_fragments(CInode *diri,
     // merge
     CDir *f = new CDir(diri, basefrag, this, srcfrags.front()->is_auth());
     f->merge(srcfrags, waiters, replay);
-    diri->add_dirfrag(f);
 
     if (was_subtree) {
       assert(f->is_subtree_root());