Always prefer GPT disk labels on x86_64
This commit is contained in:
parent
59a5ad27dc
commit
71a12cb2d8
@ -0,0 +1,98 @@
|
|||||||
|
From 7e8c7adaace58d960763225b459a0fc3739f62ee Mon Sep 17 00:00:00 2001
|
||||||
|
From: Adam Williamson <awilliam@redhat.com>
|
||||||
|
Date: Fri, 26 May 2023 15:09:49 -0700
|
||||||
|
Subject: [PATCH] Always prefer GPT disk labels on x86_64 (and clean up the
|
||||||
|
logic)
|
||||||
|
|
||||||
|
See: https://bugzilla.redhat.com/show_bug.cgi?id=2092091#c6
|
||||||
|
There was a Fedora 37 Change to prefer GPT disk labels on x86_64
|
||||||
|
BIOS installs, but for some reason, this was implemented in
|
||||||
|
anaconda by having it ignore blivet's ordering of the disk label
|
||||||
|
types and just universally prefer GPT if it's in the list at all,
|
||||||
|
which resulted in a preference for GPT in more cases than just
|
||||||
|
x86_64 BIOS. This is one step towards fixing that, by putting the
|
||||||
|
'always prefer GPT on x86_64' logic here in the blivet ordering
|
||||||
|
code where it belongs. Step 2 will be to drop the anaconda code
|
||||||
|
that overrides blivet's preference order.
|
||||||
|
|
||||||
|
This also simplifies the logic a bit; it had gotten rather a lot
|
||||||
|
of conditions piled on top of each other and was rather hard to
|
||||||
|
read. This should achieve the same effect as before in a clearer
|
||||||
|
and more concise way.
|
||||||
|
|
||||||
|
Signed-off-by: Adam Williamson <awilliam@redhat.com>
|
||||||
|
---
|
||||||
|
blivet/formats/disklabel.py | 7 ++-----
|
||||||
|
tests/storage_tests/devices_test/partition_test.py | 2 +-
|
||||||
|
tests/unit_tests/formats_tests/disklabel_test.py | 10 ++++++++++
|
||||||
|
3 files changed, 13 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/blivet/formats/disklabel.py b/blivet/formats/disklabel.py
|
||||||
|
index 72df9d67..5b4b0a85 100644
|
||||||
|
--- a/blivet/formats/disklabel.py
|
||||||
|
+++ b/blivet/formats/disklabel.py
|
||||||
|
@@ -223,11 +223,8 @@ class DiskLabel(DeviceFormat):
|
||||||
|
label_types = ["msdos", "gpt"]
|
||||||
|
if arch.is_pmac():
|
||||||
|
label_types = ["mac"]
|
||||||
|
- elif arch.is_aarch64():
|
||||||
|
- label_types = ["gpt", "msdos"]
|
||||||
|
- elif arch.is_efi() and arch.is_arm():
|
||||||
|
- label_types = ["msdos", "gpt"]
|
||||||
|
- elif arch.is_efi() and not arch.is_aarch64():
|
||||||
|
+ # 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"]
|
||||||
|
elif arch.is_s390():
|
||||||
|
label_types += ["dasd"]
|
||||||
|
diff --git a/tests/storage_tests/devices_test/partition_test.py b/tests/storage_tests/devices_test/partition_test.py
|
||||||
|
index ba01c801..d3ff78a3 100644
|
||||||
|
--- a/tests/storage_tests/devices_test/partition_test.py
|
||||||
|
+++ b/tests/storage_tests/devices_test/partition_test.py
|
||||||
|
@@ -99,7 +99,7 @@ class PartitionDeviceTestCase(unittest.TestCase):
|
||||||
|
def test_min_max_size_alignment(self):
|
||||||
|
with sparsetmpfile("minsizetest", Size("10 MiB")) as disk_file:
|
||||||
|
disk = DiskFile(disk_file)
|
||||||
|
- disk.format = get_format("disklabel", device=disk.path)
|
||||||
|
+ disk.format = get_format("disklabel", device=disk.path, label_type="msdos")
|
||||||
|
grain_size = Size(disk.format.alignment.grainSize)
|
||||||
|
sector_size = Size(disk.format.parted_device.sectorSize)
|
||||||
|
start = int(grain_size)
|
||||||
|
diff --git a/tests/unit_tests/formats_tests/disklabel_test.py b/tests/unit_tests/formats_tests/disklabel_test.py
|
||||||
|
index f514a778..a7f5e777 100644
|
||||||
|
--- a/tests/unit_tests/formats_tests/disklabel_test.py
|
||||||
|
+++ b/tests/unit_tests/formats_tests/disklabel_test.py
|
||||||
|
@@ -75,6 +75,7 @@ class DiskLabelTestCase(unittest.TestCase):
|
||||||
|
arch.is_aarch64.return_value = False
|
||||||
|
arch.is_arm.return_value = False
|
||||||
|
arch.is_pmac.return_value = False
|
||||||
|
+ arch.is_x86.return_value = False
|
||||||
|
|
||||||
|
self.assertEqual(disklabel_class.get_platform_label_types(), ["msdos", "gpt"])
|
||||||
|
|
||||||
|
@@ -96,6 +97,14 @@ class DiskLabelTestCase(unittest.TestCase):
|
||||||
|
self.assertEqual(disklabel_class.get_platform_label_types(), ["msdos", "gpt"])
|
||||||
|
arch.is_arm.return_value = False
|
||||||
|
|
||||||
|
+ # this simulates x86_64
|
||||||
|
+ arch.is_x86.return_value = True
|
||||||
|
+ self.assertEqual(disklabel_class.get_platform_label_types(), ["gpt", "msdos"])
|
||||||
|
+ arch.is_efi.return_value = True
|
||||||
|
+ self.assertEqual(disklabel_class.get_platform_label_types(), ["gpt", "msdos"])
|
||||||
|
+ arch.is_x86.return_value = False
|
||||||
|
+ arch.is_efi.return_value = False
|
||||||
|
+
|
||||||
|
arch.is_s390.return_value = True
|
||||||
|
self.assertEqual(disklabel_class.get_platform_label_types(), ["msdos", "gpt", "dasd"])
|
||||||
|
arch.is_s390.return_value = False
|
||||||
|
@@ -138,6 +147,7 @@ class DiskLabelTestCase(unittest.TestCase):
|
||||||
|
arch.is_aarch64.return_value = False
|
||||||
|
arch.is_arm.return_value = False
|
||||||
|
arch.is_pmac.return_value = False
|
||||||
|
+ arch.is_x86.return_value = False
|
||||||
|
|
||||||
|
with mock.patch.object(dl, '_label_type_size_check') as size_check:
|
||||||
|
# size check passes for first type ("msdos")
|
||||||
|
--
|
||||||
|
2.40.1
|
||||||
|
|
@ -23,7 +23,7 @@ Version: 3.7.1
|
|||||||
|
|
||||||
#%%global prerelease .b2
|
#%%global prerelease .b2
|
||||||
# prerelease, if defined, should be something like .a1, .b1, .b2.dev1, or .c2
|
# prerelease, if defined, should be something like .a1, .b1, .b2.dev1, or .c2
|
||||||
Release: 3%{?prerelease}%{?dist}
|
Release: 4%{?prerelease}%{?dist}
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
License: LGPL-2.1-or-later
|
License: LGPL-2.1-or-later
|
||||||
%global realname blivet
|
%global realname blivet
|
||||||
@ -37,6 +37,7 @@ Patch0: 0001-remove-btrfs-plugin.patch
|
|||||||
|
|
||||||
Patch1: 0002-Add-support-for-specifying-stripe-size-for-RAID-LVs.patch
|
Patch1: 0002-Add-support-for-specifying-stripe-size-for-RAID-LVs.patch
|
||||||
Patch2: 0003-Add-support-for-filesystem-online-resize.patch
|
Patch2: 0003-Add-support-for-filesystem-online-resize.patch
|
||||||
|
Patch3: 0004-Always-prefer-GPT-disk-labels-on-x86_64-and-clean-up.patch
|
||||||
|
|
||||||
# Versions of required components (done so we make sure the buildrequires
|
# Versions of required components (done so we make sure the buildrequires
|
||||||
# match the requires versions of things).
|
# match the requires versions of things).
|
||||||
@ -199,6 +200,9 @@ configuration.
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed May 31 2023 Vojtech Trefny <@trefny@redhat.com> - 3.7.1-4
|
||||||
|
- Always prefer GPT disk labels on x86_64
|
||||||
|
|
||||||
* Tue May 23 2023 Vojtech Trefny <vtrefny@redhat.com> - 3.7.1-3
|
* Tue May 23 2023 Vojtech Trefny <vtrefny@redhat.com> - 3.7.1-3
|
||||||
- Add support for filesystem online resize
|
- Add support for filesystem online resize
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user