X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fgpt-auto-generator%2Fgpt-auto-generator.c;h=05934da82f8a18a8495bbade7ebe4357112811f9;hb=8d1db1d154c1134c9bf92b202ef198cc79979ea8;hp=25440e771ece5bfa90d2cd4d13c710ba9e9d6a87;hpb=4c8bda2442bfc6d84a5deb241dc29efcb81bf3af;p=elogind.git diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c index 25440e771..05934da82 100644 --- a/src/gpt-auto-generator/gpt-auto-generator.c +++ b/src/gpt-auto-generator/gpt-auto-generator.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include #ifdef HAVE_LINUX_BTRFS_H #include @@ -74,10 +74,8 @@ static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr errno = 0; r = blkid_do_safeprobe(b); - if (r == -2) - return -ENODEV; - else if (r == 1) - return -ENODEV; + if (r == -2 || r == 1) /* no result or uncertain */ + return -EBADSLT; else if (r != 0) return errno ? -errno : -EIO; @@ -228,7 +226,6 @@ static int add_home(const char *path, const char *fstype) { if (!lnk) return log_oom(); - mkdir_parents_label(lnk, 0755); if (symlink(unit, lnk) < 0) { log_error("Failed to create symlink %s: %m", lnk); @@ -298,6 +295,9 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) { r = verify_gpt_partition(node, &type_id, &nr, &fstype); if (r < 0) { + /* skip child devices which are not detected properly */ + if (r == -EBADSLT) + continue; log_error("Failed to verify GPT partition %s: %s", node, strerror(-r)); return r;