From 1c750c65f5f9f335d657b366649d2bbeff4b3e8b Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Wed, 18 Dec 2013 17:40:11 -0800 Subject: [PATCH] OSDMonitor: implement remove_down_primary_temp() Same as remove_down_pg_temp() Signed-off-by: Greg Farnum --- src/mon/OSDMonitor.cc | 17 ++++++++++++++++- src/mon/OSDMonitor.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index c8623cd206ec1..3a704c38d6e08 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -470,6 +470,20 @@ void OSDMonitor::remove_down_pg_temp() } } +void OSDMonitor::remove_down_primary_temp() +{ + dout(10) << "remove_down_primary_temp" << dendl; + OSDMap tmpmap(osdmap); + tmpmap.apply_incremental(pending_inc); + + for (map::iterator p = tmpmap.primary_temp->begin(); + p != tmpmap.primary_temp->end(); + ++p) { + if (tmpmap.is_down(p->second)) + pending_inc.new_primary_temp[p->first] = -1; + } +} + /* Assign a lower weight to overloaded OSDs. * * The osds that will get a lower weight are those with with a utilization @@ -560,8 +574,9 @@ void OSDMonitor::create_pending() // drop any redundant pg_temp entries remove_redundant_pg_temp(); - // drop any pg_temp entries with no up entries + // drop any pg or primary_temp entries with no up entries remove_down_pg_temp(); + remove_down_primary_temp(); } /** diff --git a/src/mon/OSDMonitor.h b/src/mon/OSDMonitor.h index 90ce6eb56335c..ec49c609f716c 100644 --- a/src/mon/OSDMonitor.h +++ b/src/mon/OSDMonitor.h @@ -206,6 +206,7 @@ private: void remove_redundant_pg_temp(); void remove_down_pg_temp(); + void remove_down_primary_temp(); int reweight_by_utilization(int oload, std::string& out_str); bool check_source(PaxosServiceMessage *m, uuid_d fsid); -- 2.39.5