1
0
mirror of git://sourceware.org/git/lvm2.git synced 2024-12-21 13:34:40 +03:00

dev-type: detect mixed dos partition with gpt's PMBR

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
This commit is contained in:
Peter Rajnoha 2024-10-03 09:38:11 +02:00
parent e2e6b08518
commit 317fae4024
No known key found for this signature in database
GPG Key ID: E776664036DF84AB

View File

@ -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;