]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: set straydn.first correctly during unlink
authorSage Weil <sage@newdream.net>
Wed, 21 Jan 2009 22:52:38 +0000 (14:52 -0800)
committerSage Weil <sage@newdream.net>
Wed, 21 Jan 2009 22:52:38 +0000 (14:52 -0800)
We need to do this in _unlink_local, not get_or_create_stray, just
as we set dn->first elsewhere in Server.cc.

src/mds/MDCache.cc
src/mds/Server.cc

index 55606411c0e6b2f2f193d88c6ae0055da861700f..356b331bcb5b0a330d0399e70e0e86a3a139d435 100644 (file)
@@ -309,8 +309,6 @@ CDentry *MDCache::get_or_create_stray_dentry(CInode *in)
   else
     assert(straydn->get_projected_linkage()->is_null());
 
-  straydn->first = in->first;
-
   return straydn;
 }
 
index aed71d1f13cdf1001f59acc3924bf49cec014407..05c94e1849826330bdd9e8f97de2aa5a7347d0cb 100644 (file)
@@ -3274,6 +3274,8 @@ void Server::_unlink_local(MDRequest *mdr, CDentry *dn, CDentry *straydn)
 
     // primary link.  add stray dentry.
     assert(straydn);
+    straydn->first = dnl->get_inode()->find_snaprealm()->get_newest_seq()+1;
+
     mdcache->predirty_journal_parents(mdr, &le->metablob, dnl->get_inode(), dn->get_dir(), PREDIRTY_PRIMARY|PREDIRTY_DIR, -1);
     mdcache->predirty_journal_parents(mdr, &le->metablob, dnl->get_inode(), straydn->get_dir(), PREDIRTY_PRIMARY|PREDIRTY_DIR, 1);
     le->metablob.add_primary_dentry(straydn, true, dnl->get_inode(), pi, 0, &snapbl);