]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
PG: move instances of log dirtying in PG into PGLog
authorSamuel Just <sam.just@inktank.com>
Mon, 10 Jun 2013 22:43:20 +0000 (15:43 -0700)
committerSamuel Just <sam.just@inktank.com>
Mon, 17 Jun 2013 21:50:53 +0000 (14:50 -0700)
Signed-off-by: Samuel Just <sam.just@inktank.com>
src/osd/PG.cc
src/osd/PGLog.h

index 0b8c21538d0b54a7f30b1f14bb401ddfa0634867..6742320b7490e049b63895a91a43299a7298b964 100644 (file)
@@ -1753,10 +1753,8 @@ void PG::split_into(pg_t child_pgid, PG *child, unsigned split_bits)
 
   child->dirty_info = true;
   child->dirty_big_info = true;
-  child->dirty_log = true;
   dirty_info = true;
   dirty_big_info = true;
-  dirty_log = true;
 }
 
 void PG::clear_recovery_state() 
@@ -2011,7 +2009,6 @@ void PG::init(int role, vector<int>& newup, vector<int>& newacting,
 
   dirty_info = true;
   dirty_big_info = true;
-  dirty_log = true;
   write_if_dirty(*t);
 }
 
@@ -2248,7 +2245,6 @@ epoch_t PG::peek_map_epoch(ObjectStore *store, coll_t coll, hobject_t &infos_oid
 void PG::write_log(ObjectStore::Transaction& t)
 {
   pg_log.write_log(t, log_oid);
-  dirty_log = false;
 }
 
 void PG::write_if_dirty(ObjectStore::Transaction& t)
@@ -6198,7 +6194,6 @@ boost::statechart::result PG::RecoveryState::Stray::react(const MLogRec& logevt)
     pg->reg_next_scrub();
     pg->dirty_info = true;
     pg->dirty_big_info = true;  // maybe.
-    pg->dirty_log = true;
     pg->pg_log.claim_log(msg->log);
     pg->pg_log.reset_backfill();
   } else {
index 9cf88c29c641b8ff0db6eba239d03fb955cac706..7dd16743e5b57c8c2692a7ce9fb867b80dca54ca 100644 (file)
@@ -259,6 +259,7 @@ public:
   void claim_log(const pg_log_t &o) {
     log.claim_log(o);
     missing.clear();
+    mark_dirty_to(eversion_t::max());
   }
 
   void split_into(
@@ -267,6 +268,8 @@ public:
       PGLog *opg_log) { 
     log.split_into(child_pgid, split_bits, &(opg_log->log));
     missing.split_into(child_pgid, split_bits, &(opg_log->missing));
+    opg_log->mark_dirty_to(eversion_t::max());
+    mark_dirty_to(eversion_t::max());
   }
 
   void recover_got(hobject_t oid, eversion_t v, pg_info_t &info) {