From: Ramana Raja Date: Tue, 14 Apr 2020 11:13:33 +0000 (+0530) Subject: mon/FSCommands: Fix 'fs new' command X-Git-Tag: v15.2.2~13^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e11fb7cfddec03fb9d9433cb0af99fbf02a48962;p=ceph.git 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) --- diff --git a/qa/tasks/cephfs/test_admin.py b/qa/tasks/cephfs/test_admin.py index b8d82afb7410..c535489602a1 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 785d30f63316..ab4329e8b87f 100644 --- a/src/mon/FSCommands.cc +++ b/src/mon/FSCommands.cc @@ -251,10 +251,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));