diff --git a/0007-Fix-checking-for-NVMe-plugin-availability.patch b/0007-Fix-checking-for-NVMe-plugin-availability.patch new file mode 100644 index 0000000..55fb740 --- /dev/null +++ b/0007-Fix-checking-for-NVMe-plugin-availability.patch @@ -0,0 +1,27 @@ +From 7677fc312b821a9c67750220f2494d06f2357780 Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Wed, 18 Sep 2024 15:30:05 +0200 +Subject: [PATCH] Fix checking for NVMe plugin availability + +--- + blivet/nvme.py | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/blivet/nvme.py b/blivet/nvme.py +index 4309dea3..72a47070 100644 +--- a/blivet/nvme.py ++++ b/blivet/nvme.py +@@ -76,6 +76,10 @@ class NVMe(object): + return False + if not hasattr(blockdev.NVMETech, "FABRICS"): + return False ++ try: ++ blockdev.nvme.is_tech_avail(blockdev.NVMETech.FABRICS, 0) # pylint: disable=no-member ++ except (blockdev.BlockDevNotImplementedError, blockdev.NVMEError): ++ return False + return True + + def startup(self): +-- +2.46.1 + diff --git a/0008-Align-sizes-up-for-growable-LVs.patch b/0008-Align-sizes-up-for-growable-LVs.patch new file mode 100644 index 0000000..dba8652 --- /dev/null +++ b/0008-Align-sizes-up-for-growable-LVs.patch @@ -0,0 +1,30 @@ +From ad7966a456224f22729c55616f2c8c73321654c7 Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Thu, 24 Oct 2024 12:18:58 +0200 +Subject: [PATCH] Align sizes up for growable LVs + +Growable LVs usually start at minimum size so adjusting it down +can change the size below allowed minimum. + +Resolves: RHEL-45180 +Resolves: RHEL-45181 +--- + blivet/devices/lvm.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/blivet/devices/lvm.py b/blivet/devices/lvm.py +index 661881ea..661dc6e0 100644 +--- a/blivet/devices/lvm.py ++++ b/blivet/devices/lvm.py +@@ -2673,7 +2673,7 @@ class LVMLogicalVolumeDevice(LVMLogicalVolumeBase, LVMInternalLogicalVolumeMixin + if not isinstance(newsize, Size): + raise AttributeError("new size must be of type Size") + +- newsize = self.vg.align(newsize) ++ newsize = self.vg.align(newsize, roundup=self.growable) + log.debug("trying to set lv %s size to %s", self.name, newsize) + # Don't refuse to set size if we think there's not enough space in the + # VG for an existing LV, since it's existence proves there is enough +-- +2.47.0 + diff --git a/0009-mod_pass_in_stratis_test.patch b/0009-mod_pass_in_stratis_test.patch new file mode 100644 index 0000000..67bb1c0 --- /dev/null +++ b/0009-mod_pass_in_stratis_test.patch @@ -0,0 +1,32 @@ +From c2177aa362d20278a0ebd5c25a776f952d83e5b1 Mon Sep 17 00:00:00 2001 +From: Jan Pokorny +Date: Fri, 11 Oct 2024 17:17:41 +0200 +Subject: [PATCH] Modified passphrase in stratis test + +FIPS requires at least 8 chars long passphrase. Dummy passphrase used +in stratis test was too short causing encryption +tests with FIPS enabled to fail. + +Changed passphrase. + +fixes RHEL-45173, RHEL-8029 +--- + tests/storage_tests/devices_test/stratis_test.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/storage_tests/devices_test/stratis_test.py b/tests/storage_tests/devices_test/stratis_test.py +index 5aaa12d4..21c4d0f5 100644 +--- a/tests/storage_tests/devices_test/stratis_test.py ++++ b/tests/storage_tests/devices_test/stratis_test.py +@@ -230,7 +230,7 @@ class StratisTestCaseClevis(StratisTestCaseBase): + blivet.partitioning.do_partitioning(self.storage) + + pool = self.storage.new_stratis_pool(name="blivetTestPool", parents=[bd], +- encrypted=True, passphrase="abcde", ++ encrypted=True, passphrase="fipsneeds8chars", + clevis=StratisClevisConfig(pin="tang", + tang_url=self._tang_server, + tang_thumbprint=None)) +-- +2.45.0 + diff --git a/0010-Fix_running_tests_in_FIPS_mode.patch b/0010-Fix_running_tests_in_FIPS_mode.patch new file mode 100644 index 0000000..b6bee25 --- /dev/null +++ b/0010-Fix_running_tests_in_FIPS_mode.patch @@ -0,0 +1,58 @@ +From cd9e137a2e33165a8af3a7e4a3d2615adcabf659 Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Fri, 8 Nov 2024 09:19:45 +0100 +Subject: [PATCH 1/2] Fix "Modified passphrase in stratis test" + +Follow up for 68708e347ef7b2f98312c76aa80366091dd4aade, two more +places where the passphrase is too short for FIPS mode. + +Resolves: RHEL-45173 +--- + tests/storage_tests/devices_test/stratis_test.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/tests/storage_tests/devices_test/stratis_test.py b/tests/storage_tests/devices_test/stratis_test.py +index 21c4d0f50..9792e0618 100644 +--- a/tests/storage_tests/devices_test/stratis_test.py ++++ b/tests/storage_tests/devices_test/stratis_test.py +@@ -105,7 +105,7 @@ def test_stratis_encrypted(self): + blivet.partitioning.do_partitioning(self.storage) + + pool = self.storage.new_stratis_pool(name="blivetTestPool", parents=[bd], +- encrypted=True, passphrase="abcde") ++ encrypted=True, passphrase="fipsneeds8chars") + self.storage.create_device(pool) + + self.storage.do_it() +@@ -260,7 +260,7 @@ def test_stratis_encrypted_clevis_tpm(self): + blivet.partitioning.do_partitioning(self.storage) + + pool = self.storage.new_stratis_pool(name="blivetTestPool", parents=[bd], +- encrypted=True, passphrase="abcde", ++ encrypted=True, passphrase="fipsneeds8chars", + clevis=StratisClevisConfig(pin="tpm2")) + self.storage.create_device(pool) + + +From ed10d97a5257c0f4fe8a2f53b0b2f787de91c355 Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Fri, 8 Nov 2024 10:02:47 +0100 +Subject: [PATCH 2/2] tests: Fix writing key file for LUKS tests + +Related: RHEL-45173 +--- + tests/storage_tests/formats_test/luks_test.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tests/storage_tests/formats_test/luks_test.py b/tests/storage_tests/formats_test/luks_test.py +index 93c8d7524..b8ec229ba 100644 +--- a/tests/storage_tests/formats_test/luks_test.py ++++ b/tests/storage_tests/formats_test/luks_test.py +@@ -99,6 +99,7 @@ def test_setup_keyfile(self): + + with tempfile.NamedTemporaryFile(prefix="blivet_test") as temp: + temp.write(b"password2") ++ temp.flush() + + # create the luks format with both passphrase and keyfile + self.fmt._key_file = temp.name diff --git a/0011-Make-GPT-default-label-type-on-all-architectures.patch b/0011-Make-GPT-default-label-type-on-all-architectures.patch new file mode 100644 index 0000000..7fba7a3 --- /dev/null +++ b/0011-Make-GPT-default-label-type-on-all-architectures.patch @@ -0,0 +1,122 @@ +From c8eff25e4c25183a76e97108d4607455cfc96ae2 Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Thu, 14 Nov 2024 14:53:28 +0100 +Subject: [PATCH] Make GPT default label type on all architectures + +Exceptions are DASD drives on s390 and 32bit ARM. Everywhere else +GPT will be default. + +Resolves: RHEL-52200 +--- + blivet/formats/disklabel.py | 11 +++++----- + .../formats_tests/disklabel_test.py | 20 +++++++++---------- + 2 files changed, 16 insertions(+), 15 deletions(-) + +diff --git a/blivet/formats/disklabel.py b/blivet/formats/disklabel.py +index f2857f07..8b39dc79 100644 +--- a/blivet/formats/disklabel.py ++++ b/blivet/formats/disklabel.py +@@ -220,12 +220,13 @@ class DiskLabel(DeviceFormat): + + @classmethod + def get_platform_label_types(cls): +- label_types = ["msdos", "gpt"] ++ # always prefer gpt except for configurations below ++ label_types = ["gpt", "msdos"] + if arch.is_pmac(): + label_types = ["mac"] +- # always prefer gpt on aarch64, x86_64, and EFI plats except 32-bit ARM +- elif arch.is_aarch64() or arch.is_x86(bits=64) or (arch.is_efi() and not arch.is_arm()): +- label_types = ["gpt", "msdos"] ++ # prefet msdos on 32-bit ARM ++ elif arch.is_arm(): ++ label_types = ["msdos", "gpt"] + elif arch.is_s390(): + label_types += ["dasd"] + +@@ -254,7 +255,7 @@ class DiskLabel(DeviceFormat): + if arch.is_s390(): + if blockdev.s390.dasd_is_fba(self.device): + # the device is FBA DASD +- return "msdos" ++ return "gpt" + elif self.parted_device.type == parted.DEVICE_DASD: + # the device is DASD + return "dasd" +diff --git a/tests/unit_tests/formats_tests/disklabel_test.py b/tests/unit_tests/formats_tests/disklabel_test.py +index 9f6e4542..823a3663 100644 +--- a/tests/unit_tests/formats_tests/disklabel_test.py ++++ b/tests/unit_tests/formats_tests/disklabel_test.py +@@ -71,7 +71,7 @@ class DiskLabelTestCase(unittest.TestCase): + arch.is_pmac.return_value = False + arch.is_x86.return_value = False + +- self.assertEqual(disklabel_class.get_platform_label_types(), ["msdos", "gpt"]) ++ self.assertEqual(disklabel_class.get_platform_label_types(), ["gpt", "msdos"]) + + arch.is_pmac.return_value = True + self.assertEqual(disklabel_class.get_platform_label_types(), ["mac"]) +@@ -100,7 +100,7 @@ class DiskLabelTestCase(unittest.TestCase): + arch.is_efi.return_value = False + + arch.is_s390.return_value = True +- self.assertEqual(disklabel_class.get_platform_label_types(), ["msdos", "gpt", "dasd"]) ++ self.assertEqual(disklabel_class.get_platform_label_types(), ["gpt", "msdos", "dasd"]) + arch.is_s390.return_value = False + + def test_label_type_size_check(self): +@@ -121,14 +121,14 @@ class DiskLabelTestCase(unittest.TestCase): + + with patch.object(blivet.formats.disklabel.DiskLabel, "parted_device", new=PropertyMock(return_value=None)): + # no parted device -> no passing size check +- self.assertEqual(dl._label_type_size_check("msdos"), False) ++ self.assertEqual(dl._label_type_size_check("gpt"), False) + + @patch("blivet.formats.disklabel.arch") + def test_best_label_type(self, arch): + """ + 1. is always in _disklabel_types + 2. is the default unless the device is too long for the default +- 3. is msdos for fba dasd on S390 ++ 3. is gpt for fba dasd on S390 + 4. is dasd for non-fba dasd on S390 + """ + dl = blivet.formats.disklabel.DiskLabel() +@@ -144,17 +144,17 @@ class DiskLabelTestCase(unittest.TestCase): + arch.is_x86.return_value = False + + with patch.object(dl, '_label_type_size_check') as size_check: +- # size check passes for first type ("msdos") ++ # size check passes for first type ("gpt") + size_check.return_value = True +- self.assertEqual(dl._get_best_label_type(), "msdos") ++ self.assertEqual(dl._get_best_label_type(), "gpt") + + # size checks all fail -> label type is None + size_check.return_value = False + self.assertEqual(dl._get_best_label_type(), None) + +- # size check passes on second call -> label type is "gpt" (second in platform list) ++ # size check passes on second call -> label type is "msdos" (second in platform list) + size_check.side_effect = [False, True] +- self.assertEqual(dl._get_best_label_type(), "gpt") ++ self.assertEqual(dl._get_best_label_type(), "msdos") + + arch.is_pmac.return_value = True + with patch.object(dl, '_label_type_size_check') as size_check: +@@ -175,10 +175,10 @@ class DiskLabelTestCase(unittest.TestCase): + size_check.return_value = True + with patch("blivet.formats.disklabel.blockdev.s390") as _s390: + _s390.dasd_is_fba.return_value = False +- self.assertEqual(dl._get_best_label_type(), "msdos") ++ self.assertEqual(dl._get_best_label_type(), "gpt") + + _s390.dasd_is_fba.return_value = True +- self.assertEqual(dl._get_best_label_type(), "msdos") ++ self.assertEqual(dl._get_best_label_type(), "gpt") + + _s390.dasd_is_fba.return_value = False + dl._parted_device.type = parted.DEVICE_DASD +-- +2.47.0 + diff --git a/0012-Fix-crash-on-ppc64le-with-GPT.patch b/0012-Fix-crash-on-ppc64le-with-GPT.patch new file mode 100644 index 0000000..b323ea9 --- /dev/null +++ b/0012-Fix-crash-on-ppc64le-with-GPT.patch @@ -0,0 +1,108 @@ +From 041b320003687fb6c740f429a079dd7b7c8f7f6f Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Thu, 5 Dec 2024 14:28:21 +0100 +Subject: [PATCH 1/2] Fix ppc64le name in devicelibs/gpt.py + +Resolves: RHEL-70153 +--- + blivet/devicelibs/gpt.py | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/blivet/devicelibs/gpt.py b/blivet/devicelibs/gpt.py +index 4a6d364d7..c6dbf7b23 100644 +--- a/blivet/devicelibs/gpt.py ++++ b/blivet/devicelibs/gpt.py +@@ -66,7 +66,7 @@ + "parisc": uuid.UUID("1aacdb3b-5444-4138-bd9e-e5c2239b2346"), + "ppc": uuid.UUID("1de3f1ef-fa98-47b5-8dcd-4a860a654d78"), + "ppc64": uuid.UUID("912ade1d-a839-4913-8964-a10eee08fbd2"), +- "ppc64el": uuid.UUID("c31c45e6-3f39-412e-80fb-4809c4980599"), ++ "ppc64le": uuid.UUID("c31c45e6-3f39-412e-80fb-4809c4980599"), + "riscv32": uuid.UUID("60d5a7fe-8e7d-435c-b714-3dd8162144e1"), + "riscv64": uuid.UUID("72ec70a6-cf74-40e6-bd49-4bda08e8f224"), + "s390": uuid.UUID("08a7acea-624c-4a20-91e8-6e0fa67d23f9"), +@@ -87,7 +87,7 @@ + "parisc": uuid.UUID("d212a430-fbc5-49f9-a983-a7feef2b8d0e"), + "ppc": uuid.UUID("98cfe649-1588-46dc-b2f0-add147424925"), + "ppc64": uuid.UUID("9225a9a3-3c19-4d89-b4f6-eeff88f17631"), +- "ppc64el": uuid.UUID("906bd944-4589-4aae-a4e4-dd983917446a"), ++ "ppc64le": uuid.UUID("906bd944-4589-4aae-a4e4-dd983917446a"), + "riscv32": uuid.UUID("ae0253be-1167-4007-ac68-43926c14c5de"), + "riscv64": uuid.UUID("b6ed5582-440b-4209-b8da-5ff7c419ea3d"), + "s390": uuid.UUID("7ac63b47-b25c-463b-8df8-b4a94e6c90e1"), +@@ -108,7 +108,7 @@ + "parisc": uuid.UUID("15de6170-65d3-431c-916e-b0dcd8393f25"), + "ppc": uuid.UUID("1b31b5aa-add9-463a-b2ed-bd467fc857e7"), + "ppc64": uuid.UUID("f5e2c20c-45b2-4ffa-bce9-2a60737e1aaf"), +- "ppc64el": uuid.UUID("d4a236e7-e873-4c07-bf1d-bf6cf7f1c3c6"), ++ "ppc64le": uuid.UUID("d4a236e7-e873-4c07-bf1d-bf6cf7f1c3c6"), + "riscv32": uuid.UUID("3a112a75-8729-4380-b4cf-764d79934448"), + "riscv64": uuid.UUID("efe0f087-ea8d-4469-821a-4c2a96a8386a"), + "s390": uuid.UUID("3482388e-4254-435a-a241-766a065f9960"), +@@ -129,7 +129,7 @@ + "parisc": uuid.UUID("dc4a4480-6917-4262-a4ec-db9384949f25"), + "ppc": uuid.UUID("7d14fec5-cc71-415d-9d6c-06bf0b3c3eaf"), + "ppc64": uuid.UUID("2c9739e2-f068-46b3-9fd0-01c5a9afbcca"), +- "ppc64el": uuid.UUID("15bb03af-77e7-4d4a-b12b-c0d084f7491c"), ++ "ppc64le": uuid.UUID("15bb03af-77e7-4d4a-b12b-c0d084f7491c"), + "riscv32": uuid.UUID("b933fb22-5c3f-4f91-af90-e2bb0fa50702"), + "riscv64": uuid.UUID("beaec34b-8442-439b-a40b-984381ed097d"), + "s390": uuid.UUID("cd0f869b-d0fb-4ca0-b141-9ea87cc78d66"), +@@ -150,7 +150,7 @@ + "parisc": uuid.UUID("5843d618-ec37-48d7-9f12-cea8e08768b2"), + "ppc": uuid.UUID("df765d00-270e-49e5-bc75-f47bb2118b09"), + "ppc64": uuid.UUID("bdb528a5-a259-475f-a87d-da53fa736a07"), +- "ppc64el": uuid.UUID("ee2b9983-21e8-4153-86d9-b6901a54d1ce"), ++ "ppc64le": uuid.UUID("ee2b9983-21e8-4153-86d9-b6901a54d1ce"), + "riscv32": uuid.UUID("cb1ee4e3-8cd0-4136-a0a4-aa61a32e8730"), + "riscv64": uuid.UUID("8f1056be-9b05-47c4-81d6-be53128e5b54"), + "s390": uuid.UUID("b663c618-e7bc-4d6d-90aa-11b756bb1797"), +@@ -171,7 +171,7 @@ + "parisc": uuid.UUID("450dd7d1-3224-45ec-9cf2-a43a346d71ee"), + "ppc": uuid.UUID("7007891d-d371-4a80-86a4-5cb875b9302e"), + "ppc64": uuid.UUID("0b888863-d7f8-4d9e-9766-239fce4d58af"), +- "ppc64el": uuid.UUID("c8bfbd1e-268e-4521-8bba-bf314c399557"), ++ "ppc64le": uuid.UUID("c8bfbd1e-268e-4521-8bba-bf314c399557"), + "riscv32": uuid.UUID("c3836a13-3137-45ba-b583-b16c50fe5eb4"), + "riscv64": uuid.UUID("d2f9000a-7a18-453f-b5cd-4d32f77a7b32"), + "s390": uuid.UUID("17440e4f-a8d0-467f-a46e-3912ae6ef2c5"), + +From 22740da280258990d557eb45ac90d86c4f821c05 Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Thu, 5 Dec 2024 14:31:15 +0100 +Subject: [PATCH 2/2] Do not crash when we fail to get discoverable GPT type + UUID + +No need to raise an exception if we fail to get the type UUID for +whatever reason. + +Related: RHEL-70153 +--- + blivet/devices/partition.py | 14 ++++++++++---- + 1 file changed, 10 insertions(+), 4 deletions(-) + +diff --git a/blivet/devices/partition.py b/blivet/devices/partition.py +index 2d67be81f..89470d9fb 100644 +--- a/blivet/devices/partition.py ++++ b/blivet/devices/partition.py +@@ -365,10 +365,16 @@ def part_type_uuid_req(self): + hasattr(parted.Partition, "type_uuid")) + + if discoverable: +- parttype = gpt_part_uuid_for_mountpoint(self._mountpoint) +- log.debug("Discovered partition type UUID %s for mount '%s'", +- parttype, self._mountpoint) +- return parttype ++ try: ++ parttype = gpt_part_uuid_for_mountpoint(self._mountpoint) ++ except errors.GPTVolUUIDError as e: ++ log.error("Failed to get partition type UUID for mount '%s': %s", ++ self._mountpoint, str(e)) ++ return None ++ else: ++ log.debug("Discovered partition type UUID %s for mount '%s'", ++ parttype, self._mountpoint) ++ return parttype + return None + + @property diff --git a/0013-Set-persistent-allow-discards-flag-for-new-LUKS-devices.patch b/0013-Set-persistent-allow-discards-flag-for-new-LUKS-devices.patch new file mode 100644 index 0000000..1c8f3ad --- /dev/null +++ b/0013-Set-persistent-allow-discards-flag-for-new-LUKS-devices.patch @@ -0,0 +1,96 @@ +From 5fc2cfb675580cecc7e583c7c6a7fb767b4507de Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Mon, 10 Mar 2025 09:52:27 +0100 +Subject: [PATCH 1/2] Set persitent allow-discards flag for newly created LUKS + devices + +We are currently using the "allow-discards" in /etc/crypttab to +set the discards/fstrim feature for LUKS, but that doesn't work +for Fedora Silverblue so we need to set the persistent flag in the +LUKS header instead. + +Resolves: RHEL-82884 +--- + blivet/formats/luks.py | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/blivet/formats/luks.py b/blivet/formats/luks.py +index 92c2f0bd7..151ca985a 100644 +--- a/blivet/formats/luks.py ++++ b/blivet/formats/luks.py +@@ -364,6 +364,15 @@ def _create(self, **kwargs): + def _post_create(self, **kwargs): + super(LUKS, self)._post_create(**kwargs) + ++ if self.luks_version == "luks2" and flags.discard_new: ++ try: ++ blockdev.crypto.luks_set_persistent_flags(self.device, ++ blockdev.CryptoLUKSPersistentFlags.ALLOW_DISCARDS) ++ except blockdev.CryptoError as e: ++ raise LUKSError("Failed to set allow discards flag for newly created LUKS format: %s" % str(e)) ++ except AttributeError: ++ log.warning("Cannot set allow discards flag: not supported") ++ + try: + info = blockdev.crypto.luks_info(self.device) + except blockdev.CryptoError as e: + +From 8312a8cb8a4f78529174031214d3cc137c503fbc Mon Sep 17 00:00:00 2001 +From: Vojtech Trefny +Date: Wed, 12 Mar 2025 11:08:00 +0100 +Subject: [PATCH 2/2] Add a simple test for setting the allow-discards flag on + LUKS + +--- + tests/unit_tests/formats_tests/luks_test.py | 30 ++++++++++++++++++++- + 1 file changed, 29 insertions(+), 1 deletion(-) + +diff --git a/tests/unit_tests/formats_tests/luks_test.py b/tests/unit_tests/formats_tests/luks_test.py +index d4322f118..70baf8f7b 100644 +--- a/tests/unit_tests/formats_tests/luks_test.py ++++ b/tests/unit_tests/formats_tests/luks_test.py +@@ -18,8 +18,17 @@ def test_create_discard_option(self): + fmt = LUKS(exists=True) + self.assertEqual(fmt.options, None) + ++ fmt = LUKS(passphrase="passphrase") ++ with patch("blivet.devicelibs.crypto.calculate_luks2_max_memory", return_value=None): ++ with patch("blivet.devicelibs.crypto.get_optimal_luks_sector_size", return_value=0): ++ with patch("blivet.formats.luks.blockdev") as bd: ++ fmt._create() ++ bd.crypto.luks_format.assert_called() ++ fmt._post_create() ++ bd.crypto.luks_set_persistent_flags.assert_not_called() ++ + # flags.discard_new=True --> discard if creating new +- with patch("blivet.flags.flags.discard_new", True): ++ with patch("blivet.formats.luks.flags.discard_new", True): + fmt = LUKS(exists=True) + self.assertEqual(fmt.options, None) + +@@ -34,6 +43,25 @@ def test_create_discard_option(self): + fmt = LUKS(exists=False, options="blah") + self.assertEqual(fmt.options, "blah,discard") + ++ fmt = LUKS(passphrase="passphrase") ++ with patch("blivet.devicelibs.crypto.calculate_luks2_max_memory", return_value=None): ++ with patch("blivet.devicelibs.crypto.get_optimal_luks_sector_size", return_value=0): ++ with patch("blivet.formats.luks.blockdev") as bd: ++ fmt._create() ++ bd.crypto.luks_format.assert_called() ++ fmt._post_create() ++ bd.crypto.luks_set_persistent_flags.assert_called() ++ ++ # LUKS 1 doesn't support the persistent flags ++ fmt = LUKS(passphrase="passphrase", luks_version="luks1") ++ with patch("blivet.devicelibs.crypto.calculate_luks2_max_memory", return_value=None): ++ with patch("blivet.devicelibs.crypto.get_optimal_luks_sector_size", return_value=0): ++ with patch("blivet.formats.luks.blockdev") as bd: ++ fmt._create() ++ bd.crypto.luks_format.assert_called() ++ fmt._post_create() ++ bd.crypto.luks_set_persistent_flags.assert_not_called() ++ + def test_key_size(self): + # default cipher is AES-XTS with 512b key + fmt = LUKS() diff --git a/python-blivet.spec b/python-blivet.spec index 15f5292..f34cfe7 100644 --- a/python-blivet.spec +++ b/python-blivet.spec @@ -5,7 +5,7 @@ Version: 3.10.0 #%%global prerelease .b2 # prerelease, if defined, should be something like .a1, .b1, .b2.dev1, or .c2 -Release: 5%{?prerelease}%{?dist} +Release: 16%{?prerelease}%{?dist} Epoch: 1 License: LGPL-2.1-or-later %global realname blivet @@ -21,6 +21,13 @@ Patch1: 0002-Fix-skipping-btrfs-calls-when-libblockdev-btrfs-plugin-is-missing.p Patch2: 0003-XFS-resize-test-fix.patch Patch3: 0004-Run-mkfs-xfs-with-force-option-by-default.patch Patch4: 0005-consolidated-s390-device-configuration.patch +Patch5: 0007-Fix-checking-for-NVMe-plugin-availability.patch +Patch6: 0008-Align-sizes-up-for-growable-LVs.patch +Patch7: 0009-mod_pass_in_stratis_test.patch +Patch8: 0010-Fix_running_tests_in_FIPS_mode.patch +Patch9: 0011-Make-GPT-default-label-type-on-all-architectures.patch +Patch10: 0012-Fix-crash-on-ppc64le-with-GPT.patch +Patch11: 0013-Set-persistent-allow-discards-flag-for-new-LUKS-devices.patch # Versions of required components (done so we make sure the buildrequires # match the requires versions of things). @@ -76,10 +83,7 @@ Recommends: libblockdev-mdraid >= %{libblockdevver} Recommends: libblockdev-mpath >= %{libblockdevver} Recommends: libblockdev-nvme >= %{libblockdevver} Recommends: libblockdev-swap >= %{libblockdevver} - -%ifarch s390 s390x Recommends: libblockdev-s390 >= %{libblockdevver} -%endif Requires: python3-bytesize >= %{libbytesizever} Requires: util-linux >= %{utillinuxver} @@ -118,6 +122,51 @@ make DESTDIR=%{buildroot} install %{python3_sitelib}/* %changelog +* Tue Mar 11 2025 Vojtech Trefny - 3.10.0-16 +- Set persistent allow-discards flag for newly created LUKS devices + Resolves: RHEL-82884 + +* Wed Jan 29 2025 Vojtech Trefny - 3.10.0-15 +- Revert "Remove support for the MD linear RAID level" + Resolves: RHEL-76808 + +* Thu Dec 05 2024 Vojtech Trefny - 3.10.0-14 +- Fix crash on ppc64le with GPT + Resolves: RHEL-70153 + +* Tue Nov 19 2024 Vojtech Trefny - 3.10.0-13 +- Make GPT default label type on all architectures + Resolves: RHEL-52200 + +* Tue Nov 12 2024 Vojtech Trefny - 3.10.0-12 +- Fix running tests in FIPS mode + Resolves: RHEL-45173 + +* Fri Nov 1 2024 Jan Pokorny - 3.10.0-11 +- Modified passphrase in stratis test + Resolves: RHEL-45173 + +* Tue Oct 29 2024 Troy Dawson - 1:3.10.0-10 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 + +* Thu Oct 24 2024 Vojtech Trefny - 3.10.0-9 +- Align sizes up for growable LVs + Resolves: RHEL-45180 + Resolves: RHEL-45181 + +* Wed Oct 09 2024 Vojtech Trefny - 3.10.0-8 +- Fix dependency on libblockdev-s390 + Resolves: RHEL-61187 + +* Mon Sep 30 2024 Vojtech Trefny - 3.10.0-7 +- Fix checking for NVMe plugin availability + Resolves: RHEL-45179 + +* Mon Sep 09 2024 Vojtech Trefny - 3.10.0-6 +- Remove support for the MD linear RAID level + Resolves: RHEL-38386 + * Tue Jul 16 2024 Vojtech Trefny - 3.10.0-5 - Consolidated Device Configuration for RHEL 10 Resolves: RHEL-39381