]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mon/OSDMonitor: disallow setting pg_num < min or > max
authorSage Weil <sage@newdream.net>
Mon, 22 Nov 2021 23:46:13 +0000 (18:46 -0500)
committerKamoltat <ksirivad@redhat.com>
Tue, 22 Mar 2022 20:10:03 +0000 (20:10 +0000)
Signed-off-by: Sage Weil <sage@newdream.net>
(cherry picked from commit 2d8753f4fe5db5a6f9eaba4fa19abb048be4e6b6)

qa/workunits/mon/pool_ops.sh
src/mon/OSDMonitor.cc

index 4ca88c0341aab412c4441e7354ee522d188c84f8..c613ce44866887bd1f9f1665d124d7a10ce10c87 100755 (executable)
@@ -50,6 +50,10 @@ ceph osd pool set $TEST_POOL pg_num_min 2
 ceph osd pool get $TEST_POOL pg_num_min | grep 2
 ceph osd pool set $TEST_POOL pg_num_max 33
 ceph osd pool get $TEST_POOL pg_num_max | grep 33
+expect_false ceph osd pool set $TEST_POOL pg_num_min 9
+expect_false ceph osd pool set $TEST_POOL pg_num_max 7
+expect_false ceph osd pool set $TEST_POOL pg_num 1
+expect_false ceph osd pool set $TEST_POOL pg_num 44
 ceph osd pool set $TEST_POOL pg_num_min 0
 expect_false ceph osd pool get $TEST_POOL pg_num_min
 ceph osd pool set $TEST_POOL pg_num_max 0
index 2acad91d480dfb392d54ac955870c8e9a09ddfb0..df04c839d846d4c8b0a05578b820bc771d220b32 100644 (file)
@@ -8384,6 +8384,19 @@ int OSDMonitor::prepare_command_pool_set(const cmdmap_t& cmdmap,
        return -EPERM;
       }
     }
+    int64_t pg_min = 0, pg_max = 0;
+    p.opts.get(pool_opts_t::PG_NUM_MIN, &pg_min);
+    p.opts.get(pool_opts_t::PG_NUM_MAX, &pg_max);
+    if (pg_min && n < pg_min) {
+      ss << "specified pg_num " << n
+        << " < pg_num_min " << pg_min;
+      return -EINVAL;
+    }
+    if (pg_max && n > pg_max) {
+      ss << "specified pg_num " << n
+        << " < pg_num_max " << pg_max;
+      return -EINVAL;
+    }
     if (osdmap.require_osd_release < ceph_release_t::nautilus) {
       // pre-nautilus osdmap format; increase pg_num directly
       assert(n > (int)p.get_pg_num());