]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: pass --set-keepcaps for FCM crush device class on mkfs 68595/head
authorGuillaume Abrioux <gabrioux@ibm.com>
Fri, 24 Apr 2026 09:08:09 +0000 (11:08 +0200)
committerGuillaume Abrioux <gabrioux@ibm.com>
Fri, 24 Apr 2026 09:14:32 +0000 (11:14 +0200)
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 <gabrioux@ibm.com>
src/ceph-volume/ceph_volume/objectstore/baseobjectstore.py
src/ceph-volume/ceph_volume/tests/objectstore/test_baseobjectstore.py

index aa7bca4e5e28cf65a88088d02c21ccb61a3a9afd..345790bb7352e3b979e884011976581531c0562c 100644 (file)
@@ -168,6 +168,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', '-'])
 
index 7a2f5cdf08a6b619e7f2e5c8da3b432e2d24d846..a059fa0f54692d0489f39412ba88c20aa4138b61 100644 (file)
@@ -177,6 +177,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)