]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mon: pool-ops against non-existent pools should return error 21958/head
authorJason Dillaman <dillaman@redhat.com>
Wed, 9 May 2018 15:45:51 +0000 (11:45 -0400)
committerKefu Chai <kchai@redhat.com>
Sat, 12 May 2018 12:13:35 +0000 (20:13 +0800)
Fixes: http://tracker.ceph.com/issues/24000
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 43dbdb9d2997171868a590671fec3afe7089c3f3)

src/mon/OSDMonitor.cc

index 8b949ca4b2eb205e53bbb4e5bc40e38e577a25ab..244c8dbf1b21ab1cef95bc849aa9dd5cab9f9298 100644 (file)
@@ -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;