return ((float)new_stat.statfs.get_used()) / ((float)new_stat.statfs.total);
}
-bool OSDService::check_osdmap_full(const set<pg_shard_t> &missing_on)
-{
- OSDMapRef osdmap = get_osdmap();
- for (auto shard : missing_on) {
- if (osdmap->get_state(shard.osd) & CEPH_OSD_FULL)
- return true;
- }
- return false;
-}
-
void OSDService::send_message_osd_cluster(int peer, Message *m, epoch_t from_epoch)
{
OSDMapRef next_map = get_nextmap_reserved();
bool is_nearfull() const;
bool need_fullness_update(); ///< osdmap state needs update
void set_injectfull(s_names type, int64_t count);
- bool check_osdmap_full(const set<pg_shard_t> &missing_on);
// -- epochs --
pg_upmap_items.count(pg);
}
+ bool check_full(const set<pg_shard_t> &missing_on) const {
+ for (auto shard : missing_on) {
+ if (get_state(shard.osd) & CEPH_OSD_FULL)
+ return true;
+ }
+ return false;
+ }
+
/*
* handy helpers to build simple maps...
*/
virtual bool check_failsafe_full() = 0;
- virtual bool check_osdmap_full(const set<pg_shard_t> &missing_on) = 0;
-
virtual bool pg_is_repair() = 0;
virtual void inc_osd_stat_repaired() = 0;
virtual bool pg_is_remote_backfilling() = 0;
// Make sure all nodes that part of the recovery aren't full
if (!ps->cct->_conf->osd_debug_skip_full_check_in_recovery &&
- ps->pg->osd->check_osdmap_full(ps->acting_recovery_backfill)) {
+ ps->get_osdmap()->check_full(ps->acting_recovery_backfill)) {
post_event(RecoveryTooFull());
return;
}
object_contexts.clear();
}
-bool PrimaryLogPG::check_osdmap_full(const set<pg_shard_t> &missing_on)
-{
- return osd->check_osdmap_full(missing_on);
-}
-
int PrimaryLogPG::rep_repair_primary_object(const hobject_t& soid, OpContext *ctx)
{
OpRequestRef op = ctx->op;
void on_removal(ObjectStore::Transaction *t) override;
void on_shutdown() override;
bool check_failsafe_full() override;
- bool check_osdmap_full(const set<pg_shard_t> &missing_on) override;
bool maybe_preempt_replica_scrub(const hobject_t& oid) override {
return write_blocked_by_scrub(oid);
}