]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: journal updates _after_ predirty_parents (which adds parent context)
authorSage Weil <sage@newdream.net>
Sat, 15 Nov 2008 00:31:53 +0000 (16:31 -0800)
committerSage Weil <sage@newdream.net>
Sat, 15 Nov 2008 00:31:53 +0000 (16:31 -0800)
This ensures the dirlumps occur in an order that can be replayed
to reconstruct the hierarchy (ancestors first).

src/mds/Locker.cc
src/mds/Server.cc

index 0e60c39dffc3b9d367dfc96e30612645f5dd25a3..9223f56d792efb27f01376b59ba20664af048fcf 100644 (file)
@@ -58,7 +58,7 @@
 #undef dout_prefix
 #define dout_prefix _prefix(mds)
 static ostream& _prefix(MDS *mds) {
-  return *_dout << dbeginl << " mds" << mds->get_nodeid() << ".locker ";
+  return *_dout << dbeginl << "mds" << mds->get_nodeid() << ".locker ";
 }
 
 
index d219521f95ab6ffda51db610641712f8ba34f085..0c9734743185a28f78b2bbcdf61fbfcd02ba90c9 100644 (file)
@@ -3004,9 +3004,6 @@ void Server::_unlink_local(MDRequest *mdr, CDentry *dn, CDentry *straydn)
   pi->nlink--;
   pi->ctime = mdr->now;
 
-  mdcache->journal_cow_dentry(mdr, &le->metablob, dn);
-  le->metablob.add_null_dentry(dn, true);
-
   if (dn->is_primary()) {
     // project snaprealm, too
     bufferlist snapbl;
@@ -3029,6 +3026,9 @@ void Server::_unlink_local(MDRequest *mdr, CDentry *dn, CDentry *straydn)
     mdcache->journal_dirty_inode(mdr, &le->metablob, dn->inode);
   }
 
+  mdcache->journal_cow_dentry(mdr, &le->metablob, dn);
+  le->metablob.add_null_dentry(dn, true);
+
   if (mdr->more()->dst_reanchor_atid)
     le->metablob.add_table_transaction(TABLE_ANCHOR, mdr->more()->dst_reanchor_atid);