From: Milind Changire Date: Tue, 23 Aug 2022 11:13:08 +0000 (+0530) Subject: mon: block monitor managed snaps for fs pools X-Git-Tag: v17.2.6~50^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fa64a6d237002934945e0ae011f2c11a88119ee0;p=ceph.git mon: block monitor managed snaps for fs pools Signed-off-by: Milind Changire (cherry picked from commit 23db15d5c2b428afec27c682052347ad07170413) --- diff --git a/src/mon/FSCommands.cc b/src/mon/FSCommands.cc index b5f8b6ce373c..5acafb1ff91d 100644 --- a/src/mon/FSCommands.cc +++ b/src/mon/FSCommands.cc @@ -1524,6 +1524,12 @@ int FileSystemCommandHandler::_check_pool( return -ENOENT; } + if (pool->has_snaps()) { + *ss << "pool(" << pool_id <<") already has mon-managed snaps; " + "can't attach pool to fs"; + return -EOPNOTSUPP; + } + const string& pool_name = osd_map.get_pool_name(pool_id); if (pool->is_erasure()) { diff --git a/src/mon/OSDMonitor.cc b/src/mon/OSDMonitor.cc index 5d76862e0a83..8b4f952bd534 100644 --- a/src/mon/OSDMonitor.cc +++ b/src/mon/OSDMonitor.cc @@ -14049,6 +14049,16 @@ bool OSDMonitor::prepare_pool_op(MonOpRequestRef op) const pg_pool_t *pool = osdmap.get_pg_pool(m->pool); + if (m->op == POOL_OP_CREATE_SNAP || + m->op == POOL_OP_CREATE_UNMANAGED_SNAP) { + if (const auto& fsmap = mon.mdsmon()->get_fsmap(); fsmap.pool_in_use(m->pool)) { + dout(20) << "monitor-managed snapshots have been disabled for pools " + " attached to an fs - pool:" << m->pool << dendl; + _pool_op_reply(op, -EOPNOTSUPP, osdmap.get_epoch()); + return false; + } + } + switch (m->op) { case POOL_OP_CREATE_SNAP: if (pool->is_tier()) {