diff --git a/blivet/tasks/fsmkfs.py b/blivet/tasks/fsmkfs.py index 062d54777..e9daa9ea3 100644 --- a/blivet/tasks/fsmkfs.py +++ b/blivet/tasks/fsmkfs.py @@ -272,11 +272,18 @@ def do_task(self, options=None, label=False, set_uuid=False, nodiscard=False): " is unacceptable for this filesystem." % (self.fs.label, self.fs.type)) + if self.fs.create_options: + create_options = shlex.split(self.fs.create_options) + else: + create_options = [] + if options: + create_options += options + try: bd_options = BlockDev.FSMkfsOptions(label=self.fs.label if label else None, uuid=self.fs.uuid if set_uuid else None, no_discard=self.fs._mkfs_nodiscard if nodiscard else False) - BlockDev.fs.mkfs(self.fs.device, self.fstype, bd_options, extra=options or []) + BlockDev.fs.mkfs(self.fs.device, self.fstype, bd_options, extra={k: '' for k in create_options}) except BlockDev.FSError as e: raise FSError(str(e)) diff --git a/tests/storage_tests/formats_test/fs_test.py b/tests/storage_tests/formats_test/fs_test.py index 7c9ec58b3..e566670d5 100644 --- a/tests/storage_tests/formats_test/fs_test.py +++ b/tests/storage_tests/formats_test/fs_test.py @@ -10,6 +10,7 @@ from blivet.formats import get_format from blivet.devices import PartitionDevice, DiskDevice from blivet.flags import flags +from blivet.util import capture_output from .loopbackedtestcase import LoopBackedTestCase @@ -67,6 +68,25 @@ def test_online_resize(self): an_fs.unmount() + def test_create_options(self): + label = "root-test-label" + uuid = "c1b9d5a2-f162-11cf-9ece-0020afc76f16" + + an_fs = self._fs_class() + if not an_fs.formattable: + self.skipTest("can not create filesystem %s" % an_fs.name) + an_fs.device = self.loop_devices[0] + + # custom fs create options -- -L