From: Sage Weil Date: Mon, 26 May 2008 22:55:54 +0000 (-0700) Subject: mds: avoid rename straydn when merging links X-Git-Tag: v0.3~170^2~51 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2bc0cfeb1d2cf322b08f8b518887d1c8f465ae14;p=ceph.git mds: avoid rename straydn when merging links --- diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 005f4362b68..c9d96109ee5 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -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;