]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "mds: fixed rename ancestor thing.. again"
authorSage Weil <sage@newdream.net>
Thu, 19 Jun 2008 23:39:03 +0000 (16:39 -0700)
committerSage Weil <sage@newdream.net>
Thu, 19 Jun 2008 23:39:03 +0000 (16:39 -0700)
This reverts commit a672ab23145c899dc095b955e42dfbf7478b647c.

src/mds/CDentry.cc
src/mds/CDentry.h
src/mds/CInode.cc
src/mds/CInode.h
src/mds/Server.cc

index 8fc44b462b66c43bbbee9b5673d270f67dfca881..d083a0d999ea376cd92c09ee49c8383210ac82a3 100644 (file)
@@ -190,6 +190,16 @@ void CDentry::mark_new()
   state_set(STATE_NEW);
 }
 
+bool CDentry::is_parent_of(CDentry *other)
+{
+  while (other) {
+    if (other == this)
+      return true;
+    other = other->get_dir()->get_inode()->get_parent_dn();
+  }
+  return false;
+}
+
 void CDentry::make_path_string(string& s)
 {
   if (dir) {
index fab43d0509c60ef24652a14d6851ff73c6641400..39bb6596b50c2cce1aaf11e9f70a093e7cf625d5 100644 (file)
@@ -191,6 +191,8 @@ public:
   const CDentry& operator= (const CDentry& right);
 
   // misc
+  bool is_parent_of(CDentry *other);
+
   void make_path_string(string& s);
   void make_path(filepath& fp);
   void make_anchor_trace(vector<class Anchor>& trace, CInode *in);
index 69ef74d10e3bf88bae9ecdbfbbed86c7048166b8..599ecd8b43274c71802b0afc846c83037458c11a 100644 (file)
@@ -389,17 +389,6 @@ CInode *CInode::get_parent_inode()
 }
 
 
-bool CInode::is_ancestor_of(CInode *other)
-{
-  while (other) {
-    if (other == this)
-      return true;
-    if (!get_parent_dn())
-      break;
-    other = get_parent_dn()->get_dir()->get_inode();
-  }
-  return false;
-}
 
 void CInode::make_path_string(string& s)
 {
index 8a6008bce9b560a39004dafb6018e7d0de595465..33427cb4b464258fd8067db099c63d587078b697 100644 (file)
@@ -319,7 +319,6 @@ private:
   }
 
   // -- misc -- 
-  bool is_ancestor_of(CInode *other);
   void make_path_string(string& s);
   void make_path(filepath& s);
   void make_anchor_trace(vector<class Anchor>& trace);
index d3933f7732b6b408e0df3edeb0fc75f1096354fa..bf47fa127606b6e651c3d3e1183d65b1935cc26d 100644 (file)
@@ -3040,26 +3040,21 @@ void Server::handle_client_rename(MDRequest *mdr)
     if (common) {
       dout(10) << "rename src and dest traces share common dentry " << *common << dendl;
     } else {
-      CInode *srcbase = mdcache->get_inode(srcpath.get_ino());
-      CInode *destbase = mdcache->get_inode(destpath.get_ino());
-
       // ok, extend srctrace toward root until it is an ancestor of desttrace.
-      while (srcbase != destbase &&
-            !srcbase->is_ancestor_of(destbase)) {
+      while (srctrace[0] != desttrace[0] &&
+            !srctrace[0]->is_parent_of(desttrace[0])) {
        srctrace.insert(srctrace.begin(),
-                       srcbase->get_parent_dn());
-       srcbase = srctrace[0]->get_dir()->get_inode();
-       dout(10) << "rename prepended srctrace with " << *srctrace[0] << dendl;
+                       srctrace[0]->get_dir()->get_inode()->get_parent_dn());
+       dout(10) << "rename prepending srctrace with " << *srctrace[0] << dendl;
       }
 
       // then, extend destpath until it shares the same parent as srcpath.
-      while (srcbase != destbase) {
+      while (desttrace[0] != srctrace[0]) {
        desttrace.insert(desttrace.begin(),
-                        destbase->get_parent_dn());
-       destbase = desttrace[0]->get_dir()->get_inode();
-       dout(10) << "rename prepended desttrace with " << *desttrace[0] << dendl;
+                        desttrace[0]->get_dir()->get_inode()->get_parent_dn());
+       dout(10) << "rename prepending desttrace with " << *desttrace[0] << dendl;
       }
-      dout(10) << "rename src and dest traces now share common ancestor " << *srcbase << dendl;
+      dout(10) << "rename src and dest traces now share common dentry " << *desttrace[0] << dendl;
     }
   }