diff --git a/src/udev/udev-watch.c b/src/udev/udev-watch.c index 1b8e2b8dbd4..82db39fecd7 100644 --- a/src/udev/udev-watch.c +++ b/src/udev/udev-watch.c @@ -161,13 +161,13 @@ static int udev_watch_clear(sd_device *dev, int dirfd, int *ret_wd) { if (ret_wd) *ret_wd = wd; - r = 0; + r = 1; finalize: /* 5. remove symlink ID -> wd. * The file is always owned by the device. Hence, it is safe to remove it unconditionally. */ if (unlinkat(dirfd, id, 0) < 0 && errno != ENOENT) - log_device_debug_errno(dev, errno, "Failed to remove '/run/udev/watch/%s': %m", id); + log_device_debug_errno(dev, errno, "Failed to remove '/run/udev/watch/%s', ignoring: %m", id); return r; } @@ -249,7 +249,7 @@ int udev_watch_end(int inotify_fd, sd_device *dev) { /* First, clear symlinks. */ r = udev_watch_clear(dev, dirfd, &wd); - if (r < 0) + if (r <= 0) return r; /* Then, remove inotify watch. */ diff --git a/src/udev/udev-worker.c b/src/udev/udev-worker.c index 5c7583a9ffe..b26bf3b980d 100644 --- a/src/udev/udev-worker.c +++ b/src/udev/udev-worker.c @@ -124,6 +124,7 @@ static int worker_lock_whole_disk(sd_device *dev, int *ret_fd) { if (flock(fd, LOCK_SH|LOCK_NB) < 0) return log_device_debug_errno(dev, errno, "Failed to flock(%s): %m", val); + log_device_debug(dev, "Successfully took flock(LOCK_SH) for %s, it will be released after the event has been processed.", val); *ret_fd = TAKE_FD(fd); return 1;