From 9bce9399580d26ad58ad3e11eec0de4e25d14c52 Mon Sep 17 00:00:00 2001 From: Ramana Raja Date: Tue, 14 Apr 2020 16:43:33 +0530 Subject: [PATCH] mon/FSCommands: Fix 'fs new' command After creating a filesystem using the 'fs new' command, the value of the 'data' and 'metadata' key of the datapool and metadatapool's application tag 'cephfs' should be the filesystem's name. This didn't happen when the data or metadata pool's application metadata 'cephfs' was enabled before the pool was used in the 'fs new' command. Fix this during the handling of the 'fs new' command by setting the value of the key of the pool's application metadata 'cephfs' to the filesystem's name even when the application metadata 'cephfs' is already enabled or set. Fixes: https://tracker.ceph.com/issues/43761 Signed-off-by: Ramana Raja (cherry picked from commit 2f45558eb84782e334d997e2c545fd99ab455783) --- qa/tasks/cephfs/test_admin.py | 18 ++++++++++++++++++ src/mon/FSCommands.cc | 4 ++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/qa/tasks/cephfs/test_admin.py b/qa/tasks/cephfs/test_admin.py index ba1cd9ac73187..6f55296e7b8ee 100644 --- a/qa/tasks/cephfs/test_admin.py +++ b/qa/tasks/cephfs/test_admin.py @@ -133,6 +133,24 @@ class TestAdminCommands(CephFSTestCase): else: raise RuntimeError("expected failure") + def test_fs_new_pool_application_metadata(self): + """ + That the application metadata set on the pools of a newly created filesystem are as expected. + """ + self.fs.delete_all_filesystems() + fs_name = "test_fs_new_pool_application" + keys = ['metadata', 'data'] + pool_names = [fs_name+'-'+key for key in keys] + mon_cmd = self.fs.mon_manager.raw_cluster_cmd + for p in pool_names: + mon_cmd('osd', 'pool', 'create', p, str(self.fs.pgs_per_fs_pool)) + mon_cmd('osd', 'pool', 'application', 'enable', p, 'cephfs') + mon_cmd('fs', 'new', fs_name, pool_names[0], pool_names[1]) + for i in range(2): + self._check_pool_application_metadata_key_value( + pool_names[i], 'cephfs', keys[i], fs_name) + + class TestConfigCommands(CephFSTestCase): """ Test that daemons and clients respond to the otherwise rarely-used diff --git a/src/mon/FSCommands.cc b/src/mon/FSCommands.cc index e2099bea81df8..78b2e08262221 100644 --- a/src/mon/FSCommands.cc +++ b/src/mon/FSCommands.cc @@ -255,10 +255,10 @@ class FsNewHandler : public FileSystemCommandHandler } mon->osdmon()->do_application_enable(data, pg_pool_t::APPLICATION_NAME_CEPHFS, - "data", fs_name); + "data", fs_name, true); mon->osdmon()->do_application_enable(metadata, pg_pool_t::APPLICATION_NAME_CEPHFS, - "metadata", fs_name); + "metadata", fs_name, true); mon->osdmon()->do_set_pool_opt(metadata, pool_opts_t::RECOVERY_PRIORITY, static_cast(5)); -- 2.39.5