]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: Skip check_pg_num on pool size decrease
authorMatan Breizman <mbreizma@redhat.com>
Thu, 15 Dec 2022 17:05:15 +0000 (17:05 +0000)
committerMatan Breizman <mbreizma@redhat.com>
Tue, 20 Dec 2022 14:09:38 +0000 (14:09 +0000)
When changing the pool size we use check_pg_num to not exceed
`mon_max_pg_per_osd` value. This check should only be applied
when increasing the size to avoid underflows.
(Same already applied when changing pg_num)

Signed-off-by: Matan Breizman <mbreizma@redhat.com>
src/mon/OSDMonitor.cc

index 22aa5d4b192230e008c4874fa8412ece074a4950..008fccdcc52f6d4070b23397e98b745d955c5f67 100644 (file)
@@ -8332,9 +8332,12 @@ int OSDMonitor::prepare_command_pool_set(const cmdmap_t& cmdmap,
       ss << "crush rule " << p.get_crush_rule() << " type does not match pool";
       return -EINVAL;
     }
-    int r = check_pg_num(pool, p.get_pg_num(), n, p.get_crush_rule(), &ss);
-    if (r < 0) {
-      return r;
+    if (n > p.size) {
+      // only when increasing pool size
+      int r = check_pg_num(pool, p.get_pg_num(), n, p.get_crush_rule(), &ss);
+      if (r < 0) {
+        return r;
+      }
     }
     p.size = n;
     p.min_size = g_conf().get_osd_pool_default_min_size(p.size);