]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: assume a minimum cluster size of 3
authorSage Weil <sage@redhat.com>
Fri, 8 Sep 2017 12:08:30 +0000 (08:08 -0400)
committerSage Weil <sage@redhat.com>
Tue, 19 Sep 2017 17:58:29 +0000 (12:58 -0500)
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 1010761e6ad392fcaa647ec0d1b3d071535adfb3)

src/mon/OSDMonitor.cc

index a047b26f27ccfa619bbac9b3465363ffe6c395fc..a86df145a2a871e30006492d8ffd6bb0f5138149 100644 (file)
@@ -5800,7 +5800,8 @@ int OSDMonitor::get_crush_rule(const string &rule_name,
 int OSDMonitor::check_pg_num(int64_t pool, int pg_num, int size, ostream *ss)
 {
   int64_t max_pgs_per_osd = g_conf->mon_pg_warn_max_per_osd;
-  int64_t max_pgs = max_pgs_per_osd * osdmap.get_num_in_osds();
+  int num_osds = MAX(osdmap.get_num_in_osds(), 3);   // assume min cluster size 3
+  int64_t max_pgs = max_pgs_per_osd * num_osds;
   int64_t projected = 0;
   if (pool < 0) {
     projected += pg_num * size;
@@ -5820,7 +5821,7 @@ int OSDMonitor::check_pg_num(int64_t pool, int pg_num, int size, ostream *ss)
        << " would mean " << projected
        << " total pgs, which exceeds max " << max_pgs
        << " (mon_pg_warn_max_per_osd " << max_pgs_per_osd
-       << " * num_in_osds " << osdmap.get_num_in_osds() << ")";
+       << " * num_in_osds " << num_osds << ")";
     return -ERANGE;
   }
   return 0;