From 2f45558eb84782e334d997e2c545fd99ab455783 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 --- 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 b8d82afb741..c535489602a 100644 --- a/qa/tasks/cephfs/test_admin.py +++ b/qa/tasks/cephfs/test_admin.py @@ -132,6 +132,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 88d5329ac9a..fa65213e52b 100644 --- a/src/mon/FSCommands.cc +++ b/src/mon/FSCommands.cc @@ -276,10 +276,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