]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: don't increase nlink when rollback stray reintegration
authorYan, Zheng <zheng.z.yan@intel.com>
Wed, 26 Mar 2014 06:28:26 +0000 (14:28 +0800)
committerYan, Zheng <zheng.z.yan@intel.com>
Fri, 28 Mar 2014 18:08:14 +0000 (02:08 +0800)
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
src/mds/Server.cc

index 19fc9140f035db8e8464b22ea20439f94782a2ef..d2a43c8583292f9843f744c0458e59322e1d81f3 100644 (file)
@@ -7061,7 +7061,14 @@ void Server::do_rename_rollback(bufferlist &rbl, int master, MDRequest *mdr,
       ti = target->get_projected_inode();
     if (ti->ctime == rollback.ctime)
       ti->ctime = rollback.orig_dest.old_ctime;
-    ti->nlink++;
+    if (MDS_INO_IS_STRAY(rollback.orig_src.dirfrag.ino)) {
+      if (MDS_INO_IS_STRAY(rollback.orig_dest.dirfrag.ino))
+       assert(!rollback.orig_dest.ino && !rollback.orig_dest.remote_ino);
+      else
+       assert(rollback.orig_dest.remote_ino &&
+              rollback.orig_dest.remote_ino == rollback.orig_src.ino);
+    } else
+      ti->nlink++;
   }
 
   if (srcdn)