From: Guillaume Abrioux Date: Fri, 24 Apr 2026 09:08:09 +0000 (+0200) Subject: ceph-volume: pass --set-keepcaps for FCM crush device class on mkfs X-Git-Tag: testing/wip-yuri9-testing-20260707.172137-tentacle^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ab79c8ecb7f72e5f0abca1699de41d4aec7e50af;p=ceph-ci.git ceph-volume: pass --set-keepcaps for FCM crush device class on mkfs When preparing the ceph-osd --mkfs command for BlueStore OSDs, add --set-keepcaps true if crush_device_class is fcm. Fixes: https://tracker.ceph.com/issues/76252 Signed-off-by: Guillaume Abrioux (cherry picked from commit e2d82d6775974cee86622bc832865e6b64fb960f) --- diff --git a/src/ceph-volume/ceph_volume/objectstore/baseobjectstore.py b/src/ceph-volume/ceph_volume/objectstore/baseobjectstore.py index e9b0ac9d630..167f9ec9d92 100644 --- a/src/ceph-volume/ceph_volume/objectstore/baseobjectstore.py +++ b/src/ceph-volume/ceph_volume/objectstore/baseobjectstore.py @@ -161,6 +161,8 @@ class BaseObjectStore: # set bdev_enable_discard = false if self.skip_mkfs_discard and self.objectstore == 'bluestore': self.osd_mkfs_cmd.extend(['--bdev-enable-discard', 'false']) + if getattr(self.args, 'crush_device_class', None) == 'fcm' and self.objectstore == 'bluestore': + self.osd_mkfs_cmd.extend(['--set-keepcaps', 'true']) if self.cephx_secret is not None: self.osd_mkfs_cmd.extend(['--keyfile', '-']) diff --git a/src/ceph-volume/ceph_volume/tests/objectstore/test_baseobjectstore.py b/src/ceph-volume/ceph_volume/tests/objectstore/test_baseobjectstore.py index fc5705c6ae5..09860ce803f 100644 --- a/src/ceph-volume/ceph_volume/tests/objectstore/test_baseobjectstore.py +++ b/src/ceph-volume/ceph_volume/tests/objectstore/test_baseobjectstore.py @@ -140,6 +140,33 @@ class TestBaseObjectStore: '--setuser', 'ceph', '--setgroup', 'ceph'] + @patch('ceph_volume.conf.cluster', 'ceph') + def test_build_osd_mkfs_cmd_fcm_crush_device_class_sets_keepcaps(self, factory): + bo = BaseObjectStore(factory(crush_device_class='fcm')) + bo.osd_path = '/var/lib/ceph/osd/ceph-123/' + bo.osd_fsid = 'abcd-1234' + bo.objectstore = 'bluestore' + bo.osd_id = '123' + bo.monmap = '/etc/ceph/ceph.monmap' + bo.osd_type = 'classic' + result = bo.build_osd_mkfs_cmd() + + assert result == ['ceph-osd', + '--cluster', + 'ceph', + '--osd-objectstore', + 'bluestore', + '--mkfs', '-i', '123', + '--monmap', + '/etc/ceph/ceph.monmap', + '--set-keepcaps', 'true', + '--keyfile', '-', + '--osd-data', + '/var/lib/ceph/osd/ceph-123/', + '--osd-uuid', 'abcd-1234', + '--setuser', 'ceph', + '--setgroup', 'ceph'] + def test_osd_mkfs_ok(self, monkeypatch, fake_call, objectstore): args = objectstore(dmcrypt=False) bo = BaseObjectStore(args)