summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/gpt-auto-generator/gpt-auto-generator.c52
1 files changed, 26 insertions, 26 deletions
diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
index 9f2da79e2c..99dc50fe3c 100644
--- a/src/gpt-auto-generator/gpt-auto-generator.c
+++ b/src/gpt-auto-generator/gpt-auto-generator.c
@@ -346,7 +346,7 @@ static int enumerate_partitions(dev_t devnum) {
_cleanup_free_ char *home = NULL, *srv = NULL;
struct udev_list_entry *first, *item;
struct udev_device *parent = NULL;
- const char *node, *pttype, *devtype;
+ const char *name, *node, *pttype, *devtype;
int home_nr = -1, srv_nr = -1;
bool home_rw = true, srv_rw = true;
blkid_partlist pl;
@@ -361,33 +361,42 @@ static int enumerate_partitions(dev_t devnum) {
if (!d)
return log_oom();
+ name = udev_device_get_devnode(d);
+ if (!name)
+ name = udev_device_get_syspath(d);
+ if (!name) {
+ log_debug("Device %u:%u does not have a name, ignoring.",
+ major(devnum), minor(devnum));
+ return 0;
+ }
+
parent = udev_device_get_parent(d);
if (!parent) {
- log_debug("Not a partitioned device, ignoring.");
+ log_debug("%s: not a partitioned device, ignoring.", name);
return 0;
}
/* Does it have a devtype? */
devtype = udev_device_get_devtype(parent);
if (!devtype) {
- log_debug("Parent doesn't have a device type, ignoring.");
+ log_debug("%s: parent doesn't have a device type, ignoring.", name);
return 0;
}
/* Is this a disk or a partition? We only care for disks... */
if (!streq(devtype, "disk")) {
- log_debug("Parent isn't a raw disk, ignoring.");
+ log_debug("%s: parent isn't a raw disk, ignoring.", name);
return 0;
}
/* Does it have a device node? */
node = udev_device_get_devnode(parent);
if (!node) {
- log_debug("Parent device does not have device node, ignoring.");
+ log_debug("%s: parent device does not have device node, ignoring.", name);
return 0;
}
- log_debug("Root device %s.", node);
+ log_debug("%s: root device %s.", name, node);
pn = udev_device_get_devnum(parent);
if (major(pn) == 0)
@@ -399,8 +408,7 @@ static int enumerate_partitions(dev_t devnum) {
if (errno == 0)
return log_oom();
- log_error_errno(errno, "Failed allocate prober: %m");
- return -errno;
+ return log_error_errno(errno, "%s: failed to allocate prober: %m", node);
}
blkid_probe_enable_partitions(b, 1);
@@ -410,25 +418,18 @@ static int enumerate_partitions(dev_t devnum) {
r = blkid_do_safeprobe(b);
if (r == -2 || r == 1) /* no result or uncertain */
return 0;
- else if (r != 0) {
- if (errno == 0)
- errno = EIO;
- log_error_errno(errno, "Failed to probe %s: %m", node);
- return -errno;
- }
+ else if (r != 0)
+ return log_error_errno(errno ?: EIO, "%s: failed to probe: %m", node);
errno = 0;
r = blkid_probe_lookup_value(b, "PTTYPE", &pttype, NULL);
- if (r != 0) {
- if (errno == 0)
- errno = EIO;
- log_error_errno(errno, "Failed to determine partition table type of %s: %m", node);
- return -errno;
- }
+ if (r != 0)
+ return log_error_errno(errno ?: EIO,
+ "%s: failed to determine partition table type: %m", node);
/* We only do this all for GPT... */
if (!streq_ptr(pttype, "gpt")) {
- log_debug("Not a GPT partition table, ignoring.");
+ log_debug("%s: not a GPT partition table, ignoring.", node);
return 0;
}
@@ -438,8 +439,7 @@ static int enumerate_partitions(dev_t devnum) {
if (errno == 0)
return log_oom();
- log_error_errno(errno, "Failed to list partitions of %s: %m", node);
- return -errno;
+ return log_error_errno(errno, "%s: failed to list partitions: %m", node);
}
e = udev_enumerate_new(udev);
@@ -456,7 +456,7 @@ static int enumerate_partitions(dev_t devnum) {
r = udev_enumerate_scan_devices(e);
if (r < 0)
- return log_error_errno(r, "Failed to enumerate partitions on %s: %m", node);
+ return log_error_errno(r, "%s: failed to enumerate partitions: %m", node);
first = udev_enumerate_get_list_entry(e);
udev_list_entry_foreach(item, first) {
@@ -511,7 +511,7 @@ static int enumerate_partitions(dev_t devnum) {
if (sd_id128_equal(type_id, GPT_SWAP)) {
if (flags & GPT_FLAG_READ_ONLY) {
- log_debug("%s marked as read-only swap partition, which is bogus, ignoring.", subnode);
+ log_debug("%s marked as read-only swap partition, which is bogus. Ignoring.", subnode);
continue;
}
@@ -597,7 +597,7 @@ static int parse_proc_cmdline_item(const char *key, const char *value) {
r = parse_boolean(value);
if (r < 0)
- log_warning("Failed to parse gpt-auto switch %s. Ignoring.", value);
+ log_warning("Failed to parse gpt-auto switch \"%s\". Ignoring.", value);
else
arg_enabled = r;