Skip to content

Commit

Permalink
mon/OSDMonitor: require mon_allow_pool_delete = true to remove pools
Browse files Browse the repository at this point in the history
This is a simple safety check.  Since we default to true it is currently
opt-in.

Backport: giant, firefly
Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit 6b982e4)
  • Loading branch information
liewegas authored and smithfarm committed May 9, 2015
1 parent fcd0ea3 commit 47eecaf
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/common/config_opts.h
Expand Up @@ -172,6 +172,7 @@ OPTION(mon_pg_warn_min_pool_objects, OPT_INT, 1000) // do not warn on pools bel
OPTION(mon_cache_target_full_warn_ratio, OPT_FLOAT, .66) // position between pool cache_target_full and max where we start warning
OPTION(mon_osd_full_ratio, OPT_FLOAT, .95) // what % full makes an OSD "full"
OPTION(mon_osd_nearfull_ratio, OPT_FLOAT, .85) // what % full makes an OSD near full
OPTION(mon_allow_pool_delete, OPT_BOOL, true) // allow pool deletion
OPTION(mon_globalid_prealloc, OPT_INT, 100) // how many globalids to prealloc
OPTION(mon_osd_report_timeout, OPT_INT, 900) // grace period before declaring unresponsive OSDs dead
OPTION(mon_force_standby_active, OPT_BOOL, true) // should mons force standby-replay mds to be active
Expand Down
6 changes: 6 additions & 0 deletions src/mon/OSDMonitor.cc
Expand Up @@ -5990,6 +5990,12 @@ int OSDMonitor::_check_remove_pool(int64_t pool, const pg_pool_t *p,
}
return -EBUSY;
}

if (!g_conf->mon_allow_pool_delete) {
*ss << "pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool";
return -EPERM;
}

*ss << "pool '" << poolstr << "' removed";
return 0;
}
Expand Down
16 changes: 16 additions & 0 deletions src/test/mon/osd-pool-create.sh
Expand Up @@ -16,6 +16,12 @@
#
source test/mon/mon-test-helpers.sh

function expect_false()
{
set -x
if "$@"; then return 1; else return 0; fi
}

function run() {
local dir=$1

Expand Down Expand Up @@ -228,6 +234,16 @@ function TEST_replicated_pool() {
grep 'cannot change to type erasure' || return 1
}

function TEST_no_pool_delete() {
local dir=$1
run_mon $dir a --public-addr $CEPH_MON
./ceph osd pool create foo 1
./ceph tell mon.a injectargs -- --no-mon-allow-pool-delete
expect_false ./ceph osd pool delete foo foo --yes-i-really-really-mean-it
./ceph tell mon.a injectargs -- --mon-allow-pool-delete
./ceph osd pool delete foo foo --yes-i-really-really-mean-it
}


main osd-pool-create

Expand Down

0 comments on commit 47eecaf

Please sign in to comment.