]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/PG: set blocked_by in Incomplete state
authorSage Weil <sage@redhat.com>
Wed, 6 Aug 2014 21:02:51 +0000 (14:02 -0700)
committerSage Weil <sage@redhat.com>
Sat, 9 Aug 2014 01:12:30 +0000 (18:12 -0700)
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/PG.cc

index d5a973655f61ddee8ff689d23bd4f69a74c97cb6..3f28cda9a30638bee3c87bf91230fef37fae6bf9 100644 (file)
@@ -6956,6 +6956,10 @@ PG::RecoveryState::Incomplete::Incomplete(my_context ctx)
 
   pg->state_clear(PG_STATE_PEERING);
   pg->state_set(PG_STATE_INCOMPLETE);
+
+  auto_ptr<PriorSet> &prior_set = context< Peering >().prior_set;
+  assert(pg->blocked_by.empty());
+  pg->blocked_by.insert(prior_set->down.begin(), prior_set->down.end());
   pg->publish_stats_to_osd();
 }
 
@@ -6996,6 +7000,8 @@ void PG::RecoveryState::Incomplete::exit()
   pg->state_clear(PG_STATE_INCOMPLETE);
   utime_t dur = ceph_clock_now(pg->cct) - enter_time;
   pg->osd->recoverystate_perf->tinc(rs_incomplete_latency, dur);
+
+  pg->blocked_by.clear();
 }
 
 /*------GetMissing--------*/