check_full_status(osd_stat);
}
+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 --
virtual bool check_failsafe_full(ostream &ss) = 0;
+ virtual bool check_osdmap_full(const set<pg_shard_t> &missing_on) = 0;
+
virtual ~Listener() {}
};
Listener *parent;
}
}
+bool PrimaryLogPG::check_osdmap_full(const set<pg_shard_t> &missing_on)
+{
+ return osd->check_osdmap_full(missing_on);
+}
+
/*---SnapTrimmer Logging---*/
#undef dout_prefix
#define dout_prefix *_dout << pg->gen_prefix()
void on_removal(ObjectStore::Transaction *t) override;
void on_shutdown() override;
bool check_failsafe_full(ostream &ss) override;
+ bool check_osdmap_full(const set<pg_shard_t> &missing_on) override;
// attr cache handling
void setattr_maybe_cache(