diff options
author | Kay Sievers <kay@vrfy.org> | 2015-08-11 13:07:25 +0200 |
---|---|---|
committer | Kay Sievers <kay@vrfy.org> | 2015-08-11 13:07:25 +0200 |
commit | 0238d4c660e732dd03ba0cdb54a29ec5870ee849 (patch) | |
tree | 2f0aa8ecf27e67723d7cccaff352d19db01c031f | |
parent | aae68db9b441963b0d1b8519e0aee8e2fc05e20c (diff) |
gpt-auto-generator: apply partition-type flags only to specific partition-types
The partition-type flags are defined independently for every partition-type. Apply
them only to the types where they are defined, and not to the ESP, which does not
appear to share the same set of flags.
https://github.com/systemd/systemd/issues/920
-rw-r--r-- | src/gpt-auto-generator/gpt-auto-generator.c | 23 | ||||
-rw-r--r-- | src/udev/udev-builtin-blkid.c | 5 |
2 files changed, 20 insertions, 8 deletions
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 9d889c17d8..40caec5ab5 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -666,7 +666,6 @@ static int enumerate_partitions(dev_t devnum) { blkid_partition pp; dev_t qn; int nr; - unsigned long long flags; q = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)); if (!q) @@ -690,13 +689,6 @@ static int enumerate_partitions(dev_t devnum) { if (!pp) continue; - flags = blkid_partition_get_flags(pp); - - /* Ignore partitions that are not marked for automatic - * mounting on discovery */ - if (flags & GPT_FLAG_NO_AUTO) - continue; - nr = blkid_partition_get_partno(pp); if (nr < 0) continue; @@ -709,6 +701,11 @@ static int enumerate_partitions(dev_t devnum) { continue; if (sd_id128_equal(type_id, GPT_SWAP)) { + unsigned long long flags; + + flags = blkid_partition_get_flags(pp); + if (flags & GPT_FLAG_NO_AUTO) + continue; if (flags & GPT_FLAG_READ_ONLY) { log_debug("%s marked as read-only swap partition, which is bogus. Ignoring.", subnode); @@ -732,6 +729,11 @@ static int enumerate_partitions(dev_t devnum) { return log_oom(); } else if (sd_id128_equal(type_id, GPT_HOME)) { + unsigned long long flags; + + flags = blkid_partition_get_flags(pp); + if (flags & GPT_FLAG_NO_AUTO) + continue; /* We only care for the first /home partition */ if (home && nr >= home_nr) @@ -745,6 +747,11 @@ static int enumerate_partitions(dev_t devnum) { return log_oom(); } else if (sd_id128_equal(type_id, GPT_SRV)) { + unsigned long long flags; + + flags = blkid_partition_get_flags(pp); + if (flags & GPT_FLAG_NO_AUTO) + continue; /* We only care for the first /srv partition */ if (srv && nr >= srv_nr) diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c index 1dad4476f3..b8066ea6e9 100644 --- a/src/udev/udev-builtin-blkid.c +++ b/src/udev/udev-builtin-blkid.c @@ -143,6 +143,11 @@ static int find_gpt_root(struct udev_device *dev, blkid_probe pr, bool test) { if (sd_id128_equal(type, GPT_ESP)) { sd_id128_t id, esp; + unsigned long long flags; + + flags = blkid_partition_get_flags(pp); + if (flags & GPT_FLAG_NO_AUTO) + continue; /* We found an ESP, let's see if it matches * the ESP we booted from. */ |