]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: remove ambiguous type case for 'osd pool set' value 24374/head
authorSage Weil <sage@redhat.com>
Fri, 3 Aug 2018 17:20:48 +0000 (12:20 -0500)
committerNathan Cutler <ncutler@suse.com>
Tue, 2 Oct 2018 18:57:23 +0000 (20:57 +0200)
This was there for compatibility with very old monitors.  Modern mons are
always taking a JSON string (which may in turn contain a string, int, or
float).

Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit efd9de4983c44cb31dccdd046b352a45c29e467b)

Conflicts:
src/mon/OSDMonitor.cc

src/mon/OSDMonitor.cc

index 60b2e9bc27b49be105891cf4daadac69887b08c2..b8696615b02304b0103b926333cb60d6e4b2ed9a 100644 (file)
@@ -6448,17 +6448,12 @@ int OSDMonitor::prepare_command_pool_set(map<string,cmd_vartype> &cmdmap,
   int64_t n = 0;
   double f = 0;
   int64_t uf = 0;  // micro-f
-  if (!cmd_getval(g_ceph_context, cmdmap, "val", val)) {
-    // wasn't a string; maybe an older mon forwarded json with an int?
-    if (!cmd_getval(g_ceph_context, cmdmap, "val", n))
-      return -EINVAL;  // no value!
-  } else {
-    // we got a string.  see if it contains an int.
-    n = strict_strtoll(val.c_str(), 10, &interr);
-    // or a float
-    f = strict_strtod(val.c_str(), &floaterr);
-    uf = llrintl(f * (double)1000000.0);
-  }
+  cmd_getval(g_ceph_context, cmdmap, "val", val);
+
+  // parse string as both int and float; different fields use different types.
+  n = strict_strtoll(val.c_str(), 10, &interr);
+  f = strict_strtod(val.c_str(), &floaterr);
+  uf = llrintl(f * (double)1000000.0);
 
   if (!p.is_tier() &&
       (var == "hit_set_type" || var == "hit_set_period" ||