From 43dbdb9d2997171868a590671fec3afe7089c3f3 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Wed, 9 May 2018 11:45:51 -0400 Subject: [PATCH] mon: pool-ops against non-existent pools should return error Fixes: http://tracker.ceph.com/issues/24000 Signed-off-by: Jason Dillaman --- src/mon/OSDMonitor.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 8b949ca4b2eb2..244c8dbf1b21a 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -11713,15 +11713,19 @@ bool OSDMonitor::preprocess_pool_op(MonOpRequestRef op) if (m->op == POOL_OP_CREATE) return preprocess_pool_op_create(op); - if (!osdmap.get_pg_pool(m->pool)) { + const pg_pool_t *p = osdmap.get_pg_pool(m->pool); + if (p == nullptr) { dout(10) << "attempt to operate on non-existent pool id " << m->pool << dendl; - _pool_op_reply(op, 0, osdmap.get_epoch()); + if (m->op == POOL_OP_DELETE) { + _pool_op_reply(op, 0, osdmap.get_epoch()); + } else { + _pool_op_reply(op, -ENOENT, osdmap.get_epoch()); + } return true; } // check if the snap and snapname exist bool snap_exists = false; - const pg_pool_t *p = osdmap.get_pg_pool(m->pool); if (p->snap_exists(m->name.c_str())) snap_exists = true; -- 2.39.5