From: Sage Weil Date: Wed, 4 Nov 2009 23:22:54 +0000 (-0800) Subject: mds: mark scatterlocks with dirty rstat/fragstat during replay X-Git-Tag: v0.18~128^2~35 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=3a32c23a8e30d2e84b480b511cffd8e8ad4acba7;p=ceph.git mds: mark scatterlocks with dirty rstat/fragstat during replay This ensures we propagate this info back toward the root after we've replayed and gone active. --- diff --git a/src/mds/journal.cc b/src/mds/journal.cc index fc7c915f66b8..e4b301827ebe 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -401,6 +401,15 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg) dir->_mark_dirty(logseg); dir->get_inode()->filelock.mark_dirty(); dir->get_inode()->nestlock.mark_dirty(); + + if (!(dir->fnode.rstat == dir->fnode.accounted_rstat) || + !(dir->fnode.fragstat == dir->fnode.accounted_fragstat)) { + dout(10) << "EMetaBlob.replay dirty nestinfo on " << *dir << dendl; + mds->locker->mark_updated_scatterlock(&dir->inode->nestlock); + logseg->dirty_dirfrag_nest.push_back(&dir->inode->xlist_dirty_dirfrag_nest); + } else { + dout(10) << "EMetaBlob.replay clean nestinfo on " << *dir << dendl; + } } if (lump.is_new()) dir->mark_new(logseg);