state = device_state_from_string(value);
if (state < 0)
- log_unit_debug(u, "Failed to parse state value: %s", value);
+ log_unit_debug(u, "Failed to parse state value, ignoring: %s", value);
else
d->deserialized_state = state;
} else if (streq(key, "found")) {
r = device_found_from_string_many(value, &d->found);
if (r < 0)
- log_unit_debug(u, "Failed to parse found value: %s", value);
+ log_unit_debug(u, "Failed to parse found value, ignoring: %s", value);
} else
log_unit_debug(u, "Unknown serialization key: %s", key);
r = extract_first_word(&alias, &word, NULL, EXTRACT_QUOTES);
if (r == 0)
- return 0;
+ break;
if (r == -ENOMEM)
return log_oom();
if (r < 0)
else
log_warning("SYSTEMD_ALIAS for %s is not an absolute path, ignoring: %s", sysfs, word);
}
+
+ return 0;
}
static void device_update_found_one(Device *d, bool add, DeviceFound found, bool now) {
if (!m->udev_monitor) {
m->udev_monitor = udev_monitor_new_from_netlink(m->udev, "udev");
if (!m->udev_monitor) {
- log_oom();
+ log_error_errno(errno, "Failed to allocate udev monitor: %m");
goto fail;
}
e = udev_enumerate_new(m->udev);
if (!e) {
- log_oom();
+ log_error_errno(errno, "Failed to alloacte udev enumerator: %m");
goto fail;
}
dev = udev_device_new_from_syspath(m->udev, sysfs);
if (!dev) {
- log_oom();
+ if (errno == ENOMEM) {
+ log_oom();
+ goto fail;
+ }
+
+ /* If we can't create a device, don't bother, it probably just disappeared. */
+ log_debug_errno(errno, "Failed to create udev device object for %s: %m", sysfs);
continue;
}
if (streq(action, "remove")) {
r = swap_process_device_remove(m, dev);
if (r < 0)
- log_error_errno(r, "Failed to process swap device remove event: %m");
+ log_warning_errno(r, "Failed to process swap device remove event, ignoring: %m");
/* If we get notified that a device was removed by
* udev, then it's completely gone, hence unset all
r = swap_process_device_new(m, dev);
if (r < 0)
- log_error_errno(r, "Failed to process swap device new event: %m");
+ log_warning_errno(r, "Failed to process swap device new event, ignoring: %m");
manager_dispatch_load_queue(m);
}
bool device_shall_be_bound_by(Unit *device, Unit *u) {
+ assert(device);
+ assert(u);
if (u->type != UNIT_MOUNT)
return false;