From c8c4cc6e81816069886af6bff968712993554759 Mon Sep 17 00:00:00 2001 From: Joao Eduardo Luis Date: Sun, 2 Feb 2014 14:02:17 +0000 Subject: [PATCH] mon: OSDMonitor: do not allow changing an erasure-coded pool's size Fixes: 7277 Reviewed-by: Loic Dachary Signed-off-by: Joao Eduardo Luis --- qa/workunits/cephtool/test.sh | 7 +++++++ src/mon/OSDMonitor.cc | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/qa/workunits/cephtool/test.sh b/qa/workunits/cephtool/test.sh index 58d0e94a5214a..8419c7f931537 100755 --- a/qa/workunits/cephtool/test.sh +++ b/qa/workunits/cephtool/test.sh @@ -369,6 +369,13 @@ ceph osd pool set data size $new_size ceph osd pool get data size | grep "size: $new_size" ceph osd pool set data size $old_size +ceph osd crush rule create-erasure ec_ruleset +ceph osd pool create pool_erasure 12 12 erasure crush_ruleset=ec_ruleset +set +e +ceph osd pool set pool_erasure size 4444 2>$TMPFILE +check_response $? 38 'can not change the size' +set -e + ceph osd pool set data hashpspool true ceph osd pool set data hashpspool false ceph osd pool set data hashpspool 0 diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index b481a5809c666..a793e40b4a87d 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -3010,6 +3010,10 @@ int OSDMonitor::prepare_command_pool_set(map &cmdmap, } if (var == "size") { + if (p.type == pg_pool_t::TYPE_ERASURE) { + ss << "can not change the size of an erasure-coded pool"; + return -ENOSYS; + } if (interr.length()) { ss << "error parsing integer value '" << val << "': " << interr; return -EINVAL; -- 2.39.5