From: Greg Farnum Date: Thu, 19 Dec 2013 01:40:11 +0000 (-0800) Subject: OSDMonitor: implement remove_down_primary_temp() X-Git-Tag: v0.78~329^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1c750c65f5f9f335d657b366649d2bbeff4b3e8b;p=ceph.git OSDMonitor: implement remove_down_primary_temp() Same as remove_down_pg_temp() Signed-off-by: Greg Farnum --- diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index c8623cd206e..3a704c38d6e 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 90ce6eb5633..ec49c609f71 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);