pi->expected_num_objects = expected_num_objects;
pi->object_hash = CEPH_STR_HASH_RJENKINS;
- {
- auto m = pg_pool_t::get_pg_autoscale_mode_by_name(
- g_conf().get_val<string>("osd_pool_default_pg_autoscale_mode"));
- pi->pg_autoscale_mode = m >= 0 ? m : 0;
+ if (auto m = pg_pool_t::get_pg_autoscale_mode_by_name(
+ g_conf().get_val<string>("osd_pool_default_pg_autoscale_mode"));
+ m != pg_pool_t::pg_autoscale_mode_t::UNKNOWN) {
+ pi->pg_autoscale_mode = m;
+ } else {
+ pi->pg_autoscale_mode = pg_pool_t::pg_autoscale_mode_t::OFF;
}
auto max = g_conf().get_val<int64_t>("mon_osd_max_initial_pgs");
pi->set_pg_num(
p.set_pgp_num_target(n);
}
} else if (var == "pg_autoscale_mode") {
- n = pg_pool_t::get_pg_autoscale_mode_by_name(val);
- if (n < 0) {
+ auto m = pg_pool_t::get_pg_autoscale_mode_by_name(val);
+ if (m == pg_pool_t::pg_autoscale_mode_t::UNKNOWN) {
ss << "specified invalid mode " << val;
return -EINVAL;
}
ss << "must set require_osd_release to nautilus or later before setting pg_autoscale_mode";
return -EINVAL;
}
- p.pg_autoscale_mode = n;
+ p.pg_autoscale_mode = m;
} else if (var == "crush_rule") {
int id = osdmap.crush->get_rule_id(val);
if (id == -ENOENT) {
pools[pool].last_change = epoch;
pools[pool].application_metadata.insert(
{pg_pool_t::APPLICATION_NAME_RBD, {}});
- auto m = pg_pool_t::get_pg_autoscale_mode_by_name(
- cct->_conf.get_val<string>("osd_pool_default_pg_autoscale_mode"));
- pools[pool].pg_autoscale_mode = m >= 0 ? m : 0;
+ if (auto m = pg_pool_t::get_pg_autoscale_mode_by_name(
+ cct->_conf.get_val<string>("osd_pool_default_pg_autoscale_mode"));
+ m != pg_pool_t::pg_autoscale_mode_t::UNKNOWN) {
+ pools[pool].pg_autoscale_mode = m;
+ } else {
+ pools[pool].pg_autoscale_mode = pg_pool_t::pg_autoscale_mode_t::OFF;
+ }
pool_name[pool] = plname;
name_pool[plname] = pool;
}
pgp_num_target = pgp_num;
pg_num_pending = pg_num;
last_force_op_resend = last_force_op_resend_prenautilus;
- pg_autoscale_mode = PG_AUTOSCALE_MODE_WARN; // default to warn on upgrade
+ pg_autoscale_mode = pg_autoscale_mode_t::WARN; // default to warn on upgrade
}
DECODE_FINISH(bl);
calc_pg_masks();
if (p.get_type_name() == "erasure") {
out << " profile " << p.erasure_code_profile;
}
- out << " size " << p.get_size()
+ out << " size " << p.get_size()
<< " min_size " << p.get_min_size()
<< " crush_rule " << p.get_crush_rule()
<< " object_hash " << p.get_object_hash_name()
if (p.get_pg_num_pending() != p.get_pg_num()) {
out << " pg_num_pending " << p.get_pg_num_pending();
}
- if (p.pg_autoscale_mode) {
+ if (p.pg_autoscale_mode != pg_pool_t::pg_autoscale_mode_t::UNKNOWN) {
out << " autoscale_mode " << p.get_pg_autoscale_mode_name(p.pg_autoscale_mode);
}
out << " last_change " << p.get_last_change();
}
}
- enum {
- PG_AUTOSCALE_MODE_OFF = 0,
- PG_AUTOSCALE_MODE_WARN = 1,
- PG_AUTOSCALE_MODE_ON = 2,
+ enum class pg_autoscale_mode_t : uint8_t {
+ OFF = 0,
+ WARN = 1,
+ ON = 2,
+ UNKNOWN = UINT8_MAX,
};
- static const char *get_pg_autoscale_mode_name(int m) {
+ static const char *get_pg_autoscale_mode_name(pg_autoscale_mode_t m) {
switch (m) {
- case PG_AUTOSCALE_MODE_OFF: return "off";
- case PG_AUTOSCALE_MODE_ON: return "on";
- case PG_AUTOSCALE_MODE_WARN: return "warn";
+ case pg_autoscale_mode_t::OFF: return "off";
+ case pg_autoscale_mode_t::ON: return "on";
+ case pg_autoscale_mode_t::WARN: return "warn";
default: return "???";
}
}
- static int get_pg_autoscale_mode_by_name(const std::string& m) {
+ static pg_autoscale_mode_t get_pg_autoscale_mode_by_name(const std::string& m) {
if (m == "off") {
- return PG_AUTOSCALE_MODE_OFF;
+ return pg_autoscale_mode_t::OFF;
}
if (m == "warn") {
- return PG_AUTOSCALE_MODE_WARN;
+ return pg_autoscale_mode_t::WARN;
}
if (m == "on") {
- return PG_AUTOSCALE_MODE_ON;
+ return pg_autoscale_mode_t::ON;
}
- return -1;
+ return pg_autoscale_mode_t::UNKNOWN;
}
utime_t create_time;
__u8 size = 0, min_size = 0; ///< number of osds in each pg
__u8 crush_rule = 0; ///< crush placement rule
__u8 object_hash = 0; ///< hash mapping object name to ps
- __u8 pg_autoscale_mode; ///< PG_AUTOSCALE_MODE_
+ pg_autoscale_mode_t pg_autoscale_mode;
+
private:
__u32 pg_num = 0, pgp_num = 0; ///< number of pgs
__u32 pg_num_pending = 0; ///< pg_num we are about to merge down to