]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
osd: use scoped enum for pg_pool_t::pg_autoscale_mode
authorKefu Chai <kchai@redhat.com>
Sun, 25 Aug 2019 04:06:51 +0000 (12:06 +0800)
committerKefu Chai <kchai@redhat.com>
Tue, 27 Aug 2019 04:41:57 +0000 (12:41 +0800)
for better readability

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/mon/OSDMonitor.cc
src/osd/OSDMap.cc
src/osd/osd_types.cc
src/osd/osd_types.h

index 7bbc305dce64fb04f33f6187dd2ae5be00f5e57c..1289ec1a039bdfd4cf89d74e2e33e6b7974d6e77 100644 (file)
@@ -7780,10 +7780,12 @@ int OSDMonitor::prepare_new_pool(string& name,
   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(
@@ -8112,8 +8114,8 @@ int OSDMonitor::prepare_command_pool_set(const cmdmap_t& cmdmap,
       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;
     }
@@ -8121,7 +8123,7 @@ int OSDMonitor::prepare_command_pool_set(const cmdmap_t& cmdmap,
       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) {
index 3982dae9827bb5bb35d481bc199c1b8494336dcb..4e0b7adc60997125f3ee986f4bc2698fbff3be56 100644 (file)
@@ -4133,9 +4133,13 @@ int OSDMap::build_simple_optioned(CephContext *cct, epoch_t e, uuid_d &fsid,
       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;
     }
index e2bcb31e314f538215fb7e7bbaf82186215f1d97..90e3bde2ffc4c85d863f9b6a6b21ff293efeffe4 100644 (file)
@@ -2064,7 +2064,7 @@ void pg_pool_t::decode(ceph::buffer::list::const_iterator& bl)
     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();
@@ -2147,7 +2147,7 @@ ostream& operator<<(ostream& out, const pg_pool_t& p)
   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()
@@ -2162,7 +2162,7 @@ ostream& operator<<(ostream& out, const pg_pool_t& p)
   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();
index 8a4241a88fc53ab97b9fd0a1c4c3eae827fe6767..14edf5df8fa818fa7f754b729ed9daa8d5d54018 100644 (file)
@@ -1323,30 +1323,31 @@ struct pg_pool_t {
     }
   }
 
-  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;
@@ -1355,7 +1356,8 @@ struct pg_pool_t {
   __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