]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: add dirty imported dirfrag to LogSegment
authorYan, Zheng <zheng.z.yan@intel.com>
Tue, 12 Mar 2013 08:11:13 +0000 (16:11 +0800)
committerGreg Farnum <greg@inktank.com>
Mon, 1 Apr 2013 16:26:23 +0000 (09:26 -0700)
Signed-off-by: Yan, Zheng <zheng.z.yan@intel.com>
Reviewed-by: Greg Farnum <greg@inktank.com>
src/mds/CDir.cc
src/mds/CDir.h
src/mds/Migrator.cc

index 44ff7fa5408b098aa07e174e12699af1b9c50c5c..c412a48dd797356b444b7d45b7f541860342c33e 100644 (file)
@@ -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);
 
index f4a3a3d4496c6e4c5e7fdce305f4ccc36e43256c..7e1db73af06fa878c63ea4f7a48d33e4adc839d1 100644 (file)
@@ -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 --
index 604a78c908dd111498eb8d8b394c1ffc8ea8d29f..cf95d6ebb29482e2cb477122e912b1135fb4a033 100644 (file)
@@ -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())