0790aa7c85
* Also Update License tags to SPDX identifiers Resolves: RHEL-61251
59 lines
1.9 KiB
Diff
59 lines
1.9 KiB
Diff
From 169430559462d162c6e44157f97126a1e75f1aed Mon Sep 17 00:00:00 2001
|
||
From: Peter Rajnoha <prajnoha@redhat.com>
|
||
Date: Thu, 3 Oct 2024 09:38:11 +0200
|
||
Subject: [PATCH] dev-type: detect mixed dos partition with gpt's PMBR
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
Detect when we have mixed dos partition with gpt's PMBR partition.
|
||
|
||
This is not a sane configuration, but detect it anyway, just in case
|
||
someone configures such partition layout manually and forcefully and
|
||
incorrectly defines one of the partition types to be the GPT's PMBR.
|
||
|
||
For example:
|
||
|
||
❯ fdisk -l /dev/sdc
|
||
|
||
Device Boot Start End Sectors Size Id Type
|
||
/dev/sdc1 2048 67583 65536 32M 83 Linux
|
||
/dev/sdc2 67584 262143 194560 95M ee GPT
|
||
|
||
Before:
|
||
(The partition filter passes even though there's real existing dos
|
||
partition - the empty GPT PMBR overrides it.)
|
||
|
||
❯ pvcreate /dev/sdc
|
||
WARNING: PMBR signature detected on /dev/sdc at offset 510. Wipe it? [y/n]:
|
||
Wiping PMBR signature on /dev/sdc.
|
||
Physical volume "/dev/sdc" successfully created.
|
||
|
||
With this patch applied:
|
||
(The GPT PMBR does not override the existence of the dos partition.)
|
||
|
||
❯ pvcreate /dev/sdc
|
||
Cannot use /dev/sdc: device is partitioned
|
||
|
||
(cherry picked from commit 317fae4024d9a2a114cf30496500501bdf41ba20)
|
||
---
|
||
lib/device/dev-type.c | 2 +-
|
||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
||
diff --git a/lib/device/dev-type.c b/lib/device/dev-type.c
|
||
index e89ed82c8..e3504e2b7 100644
|
||
--- a/lib/device/dev-type.c
|
||
+++ b/lib/device/dev-type.c
|
||
@@ -663,7 +663,7 @@ static int _has_partition_table(struct device *dev)
|
||
* If this is GPT's PMBR, then also
|
||
* check for gpt partition table.
|
||
*/
|
||
- if (buf.part[p].sys_ind == PART_MSDOS_TYPE_GPT_PMBR)
|
||
+ if (buf.part[p].sys_ind == PART_MSDOS_TYPE_GPT_PMBR && !ret)
|
||
ret = _has_gpt_partition_table(dev);
|
||
else
|
||
ret = 1;
|
||
--
|
||
2.46.2
|
||
|