}
}
- bool propose = false;
- if (pg_map.last_osdmap_epoch < epoch) {
- pending_inc.osdmap_epoch = epoch;
- propose = true;
- }
-
- if (map_pg_creates())
- propose = true;
- if (register_new_pgs())
- propose = true;
+ assert(pg_map.last_osdmap_epoch < epoch);
+ pending_inc.osdmap_epoch = epoch;
+ map_pg_creates();
+ register_new_pgs();
- if ((need_check_down_pgs || !need_check_down_pg_osds.empty()) &&
- check_down_pgs())
- propose = true;
+ if (need_check_down_pgs || !need_check_down_pg_osds.empty())
+ check_down_pgs();
- if (propose)
- propose_pending();
+ propose_pending();
}
void PGMonitor::register_pg(OSDMap *osdmap,
}
}
-bool PGMonitor::register_new_pgs()
+void PGMonitor::register_new_pgs()
{
// iterate over crush mapspace
OSDMap *osdmap = &mon->osdmon()->osdmap;
dout(10) << "register_new_pgs registered " << created << " new pgs, removed "
<< removed << " uncreated pgs" << dendl;
- return (created || removed);
}
-bool PGMonitor::map_pg_creates()
+void PGMonitor::map_pg_creates()
{
OSDMap *osdmap = &mon->osdmon()->osdmap;
}
if (changed) {
dout(10) << __func__ << " " << changed << " pgs changed primary" << dendl;
- return true;
}
- return false;
}
void PGMonitor::send_pg_creates()
}
}
-bool PGMonitor::check_down_pgs()
+void PGMonitor::check_down_pgs()
{
dout(10) << "check_down_pgs last_osdmap_epoch "
<< pg_map.last_osdmap_epoch << dendl;
if (pg_map.last_osdmap_epoch == 0)
- return false;
+ return;
// use the OSDMap that matches the one pg_map has consumed.
std::unique_ptr<OSDMap> osdmap;
osdmap.reset(new OSDMap);
osdmap->decode(bl);
- bool ret = false;
-
// if a large number of osds changed state, just iterate over the whole
// pg map.
if (need_check_down_pg_osds.size() > (unsigned)osdmap->get_num_osds() *
p.second.acting_primary != -1 &&
osdmap->is_down(p.second.acting_primary)) {
_try_mark_pg_stale(osdmap.get(), p.first, p.second);
- ret = true;
}
}
} else {
assert(stat.acting_primary == osd);
if ((stat.state & PG_STATE_STALE) == 0) {
_try_mark_pg_stale(osdmap.get(), pgid, stat);
- ret = true;
}
}
}
}
need_check_down_pgs = false;
need_check_down_pg_osds.clear();
-
- return ret;
}
inline string percentify(const float& a) {
/**
* check latest osdmap for new pgs to register
- *
- * @return true if we updated pending_inc (and should propose)
*/
- bool register_new_pgs();
+ void register_new_pgs();
/**
* recalculate creating pg mappings
- *
- * @return true if we updated pending_inc
*/
- bool map_pg_creates();
+ void map_pg_creates();
void send_pg_creates();
epoch_t send_pg_creates(int osd, Connection *con, epoch_t next);
* clears need_check_down_pgs
* clears need_check_down_pg_osds
*
- * @return true if we updated pending_inc (and should propose)
*/
- bool check_down_pgs();
+ void check_down_pgs();
void _try_mark_pg_stale(const OSDMap *osdmap, pg_t pgid,
const pg_stat_t& cur_stat);