From: Yan, Zheng Date: Tue, 12 Mar 2013 08:11:13 +0000 (+0800) Subject: mds: add dirty imported dirfrag to LogSegment X-Git-Tag: v0.62~120^2~13 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e072d34fb7e6db905d30c817a547b3686f0ba4ea;p=ceph.git mds: add dirty imported dirfrag to LogSegment Signed-off-by: Yan, Zheng Reviewed-by: Greg Farnum --- diff --git a/src/mds/CDir.cc b/src/mds/CDir.cc index 44ff7fa5408b..c412a48dd797 100644 --- a/src/mds/CDir.cc +++ b/src/mds/CDir.cc @@ -2148,7 +2148,7 @@ void CDir::finish_export(utime_t now) dirty_old_rstat.clear(); } -void CDir::decode_import(bufferlist::iterator& blp, utime_t now) +void CDir::decode_import(bufferlist::iterator& blp, utime_t now, LogSegment *ls) { ::decode(first, blp); ::decode(fnode, blp); @@ -2161,7 +2161,10 @@ void CDir::decode_import(bufferlist::iterator& blp, utime_t now) ::decode(s, blp); state &= MASK_STATE_IMPORT_KEPT; state |= (s & MASK_STATE_EXPORTED); - if (is_dirty()) get(PIN_DIRTY); + if (is_dirty()) { + get(PIN_DIRTY); + _mark_dirty(ls); + } ::decode(dir_rep, blp); diff --git a/src/mds/CDir.h b/src/mds/CDir.h index f4a3a3d4496c..7e1db73af06f 100644 --- a/src/mds/CDir.h +++ b/src/mds/CDir.h @@ -550,7 +550,7 @@ public: void abort_export() { put(PIN_TEMPEXPORTING); } - void decode_import(bufferlist::iterator& blp, utime_t now); + void decode_import(bufferlist::iterator& blp, utime_t now, LogSegment *ls); // -- auth pins -- diff --git a/src/mds/Migrator.cc b/src/mds/Migrator.cc index 604a78c908dd..cf95d6ebb294 100644 --- a/src/mds/Migrator.cc +++ b/src/mds/Migrator.cc @@ -2397,7 +2397,7 @@ int Migrator::decode_import_dir(bufferlist::iterator& blp, dout(7) << "decode_import_dir " << *dir << dendl; // assimilate state - dir->decode_import(blp, now); + dir->decode_import(blp, now, ls); // mark (may already be marked from get_or_open_dir() above) if (!dir->is_auth())