Merge pull request #10556 from yuwata/udev-event-cleanup-2

udev-event: several fixes for previous PR
This commit is contained in:
Lennart Poettering 2018-10-31 12:10:12 +01:00 committed by GitHub
commit 0aeff581cc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 18 deletions

View file

@ -281,9 +281,7 @@ int dissect_image(
/* Count the partitions enumerated by the kernel */ /* Count the partitions enumerated by the kernel */
n = 0; n = 0;
FOREACH_DEVICE(e, q) { FOREACH_DEVICE(e, q) {
dev_t qn; if (sd_device_get_devnum(q, NULL) < 0)
if (sd_device_get_devnum(q, &qn) < 0)
continue; continue;
if (!device_is_block(q)) if (!device_is_block(q))

View file

@ -475,26 +475,26 @@ static int on_spawn_io(sd_event_source *s, int fd, uint32_t revents, void *userd
static int on_spawn_timeout(sd_event_source *s, uint64_t usec, void *userdata) { static int on_spawn_timeout(sd_event_source *s, uint64_t usec, void *userdata) {
Spawn *spawn = userdata; Spawn *spawn = userdata;
char timeout[FORMAT_TIMESTAMP_RELATIVE_MAX]; char timeout[FORMAT_TIMESPAN_MAX];
assert(spawn); assert(spawn);
kill_and_sigcont(spawn->pid, SIGKILL); kill_and_sigcont(spawn->pid, SIGKILL);
log_error("Spawned process '%s' ["PID_FMT"] timed out after %s, killing", spawn->cmd, spawn->pid, log_error("Spawned process '%s' ["PID_FMT"] timed out after %s, killing", spawn->cmd, spawn->pid,
format_timestamp_relative(timeout, sizeof(timeout), spawn->timeout_usec)); format_timespan(timeout, sizeof(timeout), spawn->timeout_usec, USEC_PER_SEC));
return 1; return 1;
} }
static int on_spawn_timeout_warning(sd_event_source *s, uint64_t usec, void *userdata) { static int on_spawn_timeout_warning(sd_event_source *s, uint64_t usec, void *userdata) {
Spawn *spawn = userdata; Spawn *spawn = userdata;
char timeout[FORMAT_TIMESTAMP_RELATIVE_MAX]; char timeout[FORMAT_TIMESPAN_MAX];
assert(spawn); assert(spawn);
log_warning("Spawned process '%s' ["PID_FMT"] is taking longer than %s to complete", spawn->cmd, spawn->pid, log_warning("Spawned process '%s' ["PID_FMT"] is taking longer than %s to complete", spawn->cmd, spawn->pid,
format_timestamp_relative(timeout, sizeof(timeout), spawn->timeout_warn_usec)); format_timespan(timeout, sizeof(timeout), spawn->timeout_warn_usec, USEC_PER_SEC));
return 1; return 1;
} }
@ -727,11 +727,10 @@ static int rename_netif(struct udev_event *event) {
static int update_devnode(struct udev_event *event) { static int update_devnode(struct udev_event *event) {
sd_device *dev = event->dev->device; sd_device *dev = event->dev->device;
const char *action; const char *action;
dev_t devnum;
bool apply; bool apply;
int r; int r;
r = sd_device_get_devnum(dev, &devnum); r = sd_device_get_devnum(dev, NULL);
if (r == -ENOENT) if (r == -ENOENT)
return 0; return 0;
if (r < 0) if (r < 0)
@ -782,7 +781,6 @@ static void event_execute_rules_on_remove(
struct udev_rules *rules) { struct udev_rules *rules) {
sd_device *dev = event->dev->device; sd_device *dev = event->dev->device;
dev_t devnum;
int r; int r;
r = device_read_db_force(dev); r = device_read_db_force(dev);
@ -797,18 +795,14 @@ static void event_execute_rules_on_remove(
if (r < 0) if (r < 0)
log_device_debug_errno(dev, r, "Failed to delete database under /run/udev/data/, ignoring: %m"); log_device_debug_errno(dev, r, "Failed to delete database under /run/udev/data/, ignoring: %m");
r = sd_device_get_devnum(dev, &devnum); if (sd_device_get_devnum(dev, NULL) >= 0)
if (r < 0) {
if (r != -ENOENT)
log_device_debug_errno(dev, r, "Failed to get devnum, ignoring: %m");
} else
(void) udev_watch_end(dev); (void) udev_watch_end(dev);
(void) udev_rules_apply_to_event(rules, event, (void) udev_rules_apply_to_event(rules, event,
timeout_usec, timeout_warn_usec, timeout_usec, timeout_warn_usec,
properties_list); properties_list);
if (major(devnum) > 0) if (sd_device_get_devnum(dev, NULL) >= 0)
(void) udev_node_remove(dev); (void) udev_node_remove(dev);
} }
@ -819,7 +813,6 @@ int udev_event_execute_rules(struct udev_event *event,
_cleanup_(sd_device_unrefp) sd_device *clone = NULL; _cleanup_(sd_device_unrefp) sd_device *clone = NULL;
sd_device *dev = event->dev->device; sd_device *dev = event->dev->device;
const char *subsystem, *action; const char *subsystem, *action;
dev_t devnum;
int r; int r;
assert(event); assert(event);
@ -847,7 +840,7 @@ int udev_event_execute_rules(struct udev_event *event,
if (!event->dev_db) if (!event->dev_db)
return -ENOMEM; return -ENOMEM;
r = sd_device_get_devnum(dev, &devnum); r = sd_device_get_devnum(dev, NULL);
if (r < 0) { if (r < 0) {
if (r != -ENOENT) if (r != -ENOENT)
log_device_debug_errno(dev, r, "Failed to get devnum, ignoring: %m"); log_device_debug_errno(dev, r, "Failed to get devnum, ignoring: %m");