From d3b5a4c72d2f4b75cec6468c78aa83fc320a59c9 Mon Sep 17 00:00:00 2001 From: Rishabh Dave Date: Wed, 16 Apr 2025 13:54:27 +0530 Subject: [PATCH] mgr/vol: don't delete user-created pool in "volume create" command If one of the pool names passed to "ceph fs volume create" command (through --data-pool and --meta-pool name) is absent, don't delete the pool that is present and passed to this command during the cleanup code of this command. IOW, "volume create" command should continue deleting pool created by it but not delete pool created by the user. Fixes: https://tracker.ceph.com/issues/70945 Signed-off-by: Rishabh Dave (cherry picked from commit 4299f660ba9c83ef9305b2834c195da9008810a9) --- src/pybind/mgr/volumes/fs/operations/volume.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pybind/mgr/volumes/fs/operations/volume.py b/src/pybind/mgr/volumes/fs/operations/volume.py index 8c031c498ff..dc06f3f7d4b 100644 --- a/src/pybind/mgr/volumes/fs/operations/volume.py +++ b/src/pybind/mgr/volumes/fs/operations/volume.py @@ -107,6 +107,8 @@ def create_volume(mgr, volname, placement, data_pool, metadata_pool): # are passed by user they must exist already), leave it here so that some # future readers know that this case is already considered and not missed # by chance. + data_pool_was_created = False + metadata_pool_was_created = False if data_pool and metadata_pool: pass elif not data_pool and metadata_pool: @@ -119,6 +121,8 @@ def create_volume(mgr, volname, placement, data_pool, metadata_pool): retval = create_fs_pools(mgr, volname, data_pool, metadata_pool) success = retval.pop(0) if success: + data_pool_was_created = True + metadata_pool_was_created = True data_pool, metadata_pool = retval else: return retval @@ -128,8 +132,10 @@ def create_volume(mgr, volname, placement, data_pool, metadata_pool): if r != 0: log.error("Filesystem creation error: {0} {1} {2}".format(r, outb, outs)) #cleanup - remove_pool(mgr, data_pool) - remove_pool(mgr, metadata_pool) + if data_pool_was_created: + remove_pool(mgr, data_pool) + if metadata_pool_was_created: + remove_pool(mgr, metadata_pool) return r, outb, outs return create_mds(mgr, volname, placement) -- 2.39.5