]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds/cdir: fix the type of dentry in the judgment 9494/head
authorhuanwen ren <ren.huanwen@zte.com.cn>
Tue, 7 Jun 2016 03:07:42 +0000 (11:07 +0800)
committerhuanwen ren <ren.huanwen@zte.com.cn>
Sun, 12 Jun 2016 07:13:52 +0000 (15:13 +0800)
Perfect is_primary/is_remote/is_null type of dentry in the judgment

Signed-off-by: huanwen ren <ren.huanwen@zte.com.cn>
src/mds/CDir.cc

index 3f47918c9ed8757ba25dd325ba6f09a934dfe238..a3725c4283d14924f6f16de54751dffb4cc78108 100644 (file)
@@ -557,10 +557,10 @@ void CDir::link_inode_work( CDentry *dn, CInode *in)
 
 void CDir::unlink_inode(CDentry *dn)
 {
-  if (dn->get_linkage()->is_remote()) {
-    dout(12) << "unlink_inode " << *dn << dendl;
-  } else {
+  if (dn->get_linkage()->is_primary()) {
     dout(12) << "unlink_inode " << *dn << " " << *dn->get_linkage()->get_inode() << dendl;
+  } else {
+    dout(12) << "unlink_inode " << *dn << dendl;
   }
 
   unlink_inode_work(dn);
@@ -608,10 +608,8 @@ void CDir::unlink_inode_work( CDentry *dn )
       dn->unlink_remote(dn->get_linkage());
 
     dn->get_linkage()->set_remote(0, 0);
-  } else {
+  } else if (dn->get_linkage()->is_primary()) {
     // primary
-    assert(dn->get_linkage()->is_primary());
     // unpin dentry?
     if (in->get_num_ref())
       dn->put(CDentry::PIN_INODEPIN);
@@ -623,6 +621,8 @@ void CDir::unlink_inode_work( CDentry *dn )
     // detach inode
     in->remove_primary_parent(dn);
     dn->get_linkage()->inode = 0;
+  } else {
+    assert(!dn->get_linkage()->is_null());
   }
 }
 
@@ -2187,7 +2187,7 @@ void CDir::_encode_dentry(CDentry *dn, bufferlist& bl,
     bl.append('L');         // remote link
     ::encode(ino, bl);
     ::encode(d_type, bl);
-  } else {
+  } else if (dn->linkage.is_primary()) {
     // primary link
     CInode *in = dn->linkage.get_inode();
     assert(in);
@@ -2209,6 +2209,8 @@ void CDir::_encode_dentry(CDentry *dn, bufferlist& bl,
     bufferlist snap_blob;
     in->encode_snap_blob(snap_blob);
     in->encode_bare(bl, cache->mds->mdsmap->get_up_features(), &snap_blob);
+  } else {
+    assert(!dn->linkage.is_null());
   }
 }