]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: copy BLKID_PARTS_FORCE_GPT to whole-disk prober
authorKarel Zak <kzak@redhat.com>
Tue, 4 Apr 2023 09:04:51 +0000 (11:04 +0200)
committerKarel Zak <kzak@redhat.com>
Tue, 4 Apr 2023 09:04:51 +0000 (11:04 +0200)
Addresses: https://github.com/util-linux/util-linux/discussions/2146
Signed-off-by: Karel Zak <kzak@redhat.com>
libblkid/src/blkidP.h
libblkid/src/partitions/partitions.c
libblkid/src/probe.c

index 5d2a02055dc812fa0c94204eb5cce183708df6c4..007cc357b12dc96a5265093810e7817ac359dc87 100644 (file)
@@ -544,6 +544,9 @@ extern int blkid_probe_get_hint(blkid_probe pr, const char *name, uint64_t *valu
                        __attribute__((nonnull(1,2)))
                        __attribute__((warn_unused_result));
 
+extern int blkid_probe_get_partitions_flags(blkid_probe pr)
+                       __attribute__((nonnull));
+
 /* filter bitmap macros */
 #define blkid_bmp_wordsize             (8 * sizeof(unsigned long))
 #define blkid_bmp_idx_bit(item)                (1UL << ((item) % blkid_bmp_wordsize))
index ae63a38ccad18d3861b668006dd52625a6b9e0b3..1c344fd30334d60cfe6c75aa442247a1324f86ea 100644 (file)
@@ -234,6 +234,11 @@ int blkid_probe_set_partitions_flags(blkid_probe pr, int flags)
        return 0;
 }
 
+int blkid_probe_get_partitions_flags(blkid_probe pr)
+{
+       return pr->chains[BLKID_CHAIN_PARTS].flags;
+}
+
 /**
  * blkid_probe_reset_partitions_filter:
  * @pr: prober
index 35de30334697c712a8b068d342d96f88a44321e1..b4299493fb344e2f6f659f0e671a51bfca793267 100644 (file)
@@ -1930,6 +1930,7 @@ blkid_probe blkid_probe_get_wholedisk_probe(blkid_probe pr)
        if (!pr->disk_probe) {
                /* Open a new disk prober */
                char *disk_path = blkid_devno_to_devname(disk);
+               int flags;
 
                if (!disk_path)
                        return NULL;
@@ -1942,6 +1943,11 @@ blkid_probe blkid_probe_get_wholedisk_probe(blkid_probe pr)
 
                if (!pr->disk_probe)
                        return NULL;    /* ENOMEM? */
+
+               flags = blkid_probe_get_partitions_flags(pr);
+               if (flags & BLKID_PARTS_FORCE_GPT)
+                       blkid_probe_set_partitions_flags(pr->disk_probe,
+                                                        BLKID_PARTS_FORCE_GPT);
        }
 
        return pr->disk_probe;