]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: avoid rename straydn when merging links
authorSage Weil <sage@newdream.net>
Mon, 26 May 2008 22:55:54 +0000 (15:55 -0700)
committerSage Weil <sage@newdream.net>
Mon, 26 May 2008 22:55:54 +0000 (15:55 -0700)
src/mds/Server.cc

index 005f4362b68a97e769aeab74c311c114ac10ea0b..c9d96109ee587666514c448ff5a2923f45e7ad99 100644 (file)
@@ -3169,9 +3169,12 @@ void Server::handle_client_rename(MDRequest *mdr)
   if (mdr->now == utime_t())
     mdr->now = g_clock.real_now();
 
+  bool linkmerge = (srcdn->inode == destdn->inode &&
+                   (srcdn->is_primary() || destdn->is_primary()));
+
   // -- create stray dentry? --
   CDentry *straydn = 0;
-  if (destdn->is_primary()) {
+  if (destdn->is_primary() && !linkmerge) {
     straydn = mdcache->get_or_create_stray_dentry(destdn->inode);
     mdr->pin(straydn);
     dout(10) << "straydn is " << *straydn << dendl;
@@ -3224,9 +3227,6 @@ void Server::handle_client_rename(MDRequest *mdr)
   }
   
   // -- prepare anchor updates -- 
-  bool linkmerge = (srcdn->inode == destdn->inode &&
-                   (srcdn->is_primary() || destdn->is_primary()));
-
   if (!linkmerge) {
     C_Gather *anchorgather = 0;