]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: end of traverse may be indoe or projected_inode
authorSage Weil <sage@newdream.net>
Tue, 13 Jan 2009 00:52:10 +0000 (16:52 -0800)
committerSage Weil <sage@newdream.net>
Tue, 13 Jan 2009 00:52:10 +0000 (16:52 -0800)
This may need a more general solution...

src/mds/Server.cc

index 05949998244b1bb168db028cb86fe7c4164a1c2b..78bb3460d5a6e64dbf6809ff7ed658a0d883cca6 100644 (file)
@@ -1471,7 +1471,8 @@ CInode* Server::rdlock_path_pin_ref(MDRequest *mdr,
   if (mdr->ref) {
     if (mdr->trace.size()) {
       CDentry *last = mdr->trace[mdr->trace.size()-1];
-      assert(last->get_inode() == mdr->ref);
+      assert(last->get_inode() == mdr->ref ||
+            last->get_projected_inode() == mdr->ref);
     }
     dout(10) << "rdlock_path_pin_ref had snap " << mdr->ref_snapid << " " << *mdr->ref << dendl;
     return mdr->ref;
@@ -1582,7 +1583,8 @@ CDentry* Server::rdlock_path_xlock_dentry(MDRequest *mdr, bool okexist, bool mus
 
   if (mdr->ref) {
     CDentry *last = mdr->trace[mdr->trace.size()-1];
-    assert(last->get_inode() == mdr->ref);
+    assert(last->get_inode() == mdr->ref ||
+          last->get_projected_inode() == mdr->ref);
     dout(10) << "rdlock_path_xlock_dentry had " << *last << " " << *mdr->ref << dendl;
     return last;
   }