OSDMonitor: implement remove_down_primary_temp()

Same as remove_down_pg_temp()

Signed-off-by: Greg Farnum <greg@inktank.com>
This commit is contained in:
Greg Farnum 2013-12-18 17:40:11 -08:00
parent 412afea976
commit 1c750c65f5
2 changed files with 17 additions and 1 deletions

View File

@ -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<pg_t,int>::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();
}
/**

View File

@ -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);