From dc0f18008c1c64c9ce8c44c754a057948548a6be 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 19f0e2fa1d3..79b52b8c499 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