|
|
- --- a/src/setup/setup.c
- +++ b/src/setup/setup.c
- @@ -83,6 +83,9 @@ static int verify_esp(const char *p, uin
- blkid_probe b = NULL;
- int r;
- const char *v;
- + char buf[1024];
- +
- + memset(buf, 0, sizeof(buf));
-
- if (statfs(p, &sfs) < 0) {
- fprintf(stderr, "Failed to check file system type of %s: %m\n", p);
- @@ -122,24 +125,38 @@ static int verify_esp(const char *p, uin
- return -ENODEV;
- }
-
- - r = asprintf(&t, "/dev/block/%u:%u", major(st.st_dev), minor(st.st_dev));
- + r = asprintf(&t, "/sys/dev/block/%u:%u", major(st.st_dev), minor(st.st_dev));
- if (r < 0) {
- fprintf(stderr, "Out of memory.\n");
- return -ENOMEM;
- }
-
- + r = readlink(t, buf, sizeof(buf) - 1);
- + if (r < 0) {
- + fprintf(stderr, "Failed to identify device node for block device %u:%u\n", major(st.st_dev), minor(st.st_dev));
- + return -ENOMEM;
- + }
- +
- + r = asprintf(&t, "/dev/%s", basename(buf));
- + if (r < 0) {
- + fprintf(stderr, "Out of memory.\n");
- + return -ENOMEM;
- + }
- +
- errno = 0;
- b = blkid_new_probe_from_filename(t);
- - free(t);
- if (!b) {
- if (errno != 0) {
- - fprintf(stderr, "Failed to open file system %s: %m\n", p);
- + fprintf(stderr, "Failed to open file system %s on %s: %m\n", p, t);
- + free(t);
- return -errno;
- }
-
- + free(t);
- fprintf(stderr, "Out of memory.\n");
- return -ENOMEM;
- }
- + free(t);
-
- blkid_probe_enable_superblocks(b, 1);
- blkid_probe_set_superblocks_flags(b, BLKID_SUBLKS_TYPE);
|