]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev-watch: make udev_watch_lookup() return 1 when device found
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 26 Oct 2018 23:19:51 +0000 (08:19 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Tue, 6 Nov 2018 02:15:39 +0000 (11:15 +0900)
src/udev/udev-watch.c
src/udev/udevd.c

index 1d3d9f1c083c171fd8da53a6db26a61c01e7c186..f63a5839d6debbea8d902d59f2531b64b13731fe 100644 (file)
@@ -147,22 +147,23 @@ int udev_watch_lookup(int wd, sd_device **ret) {
         assert(ret);
 
         if (inotify_fd < 0)
-                return log_error_errno(EINVAL, "Invalid inotify descriptor.");
+                return log_debug_errno(EINVAL, "Invalid inotify descriptor.");
 
         if (wd < 0)
-                return log_error_errno(EINVAL, "Invalid watch handle.");
+                return log_debug_errno(EINVAL, "Invalid watch handle.");
 
         xsprintf(filename, "/run/udev/watch/%d", wd);
         r = readlink_malloc(filename, &device);
-        if (r < 0) {
-                if (r != -ENOENT)
-                        return log_error_errno(errno, "Failed to read link '%s': %m", filename);
+        if (r == -ENOENT)
                 return 0;
-        }
+        if (r < 0)
+                return log_debug_errno(r, "Failed to read link '%s': %m", filename);
 
         r = sd_device_new_from_device_id(ret, device);
+        if (r == -ENODEV)
+                return 0;
         if (r < 0)
-                return log_error_errno(r, "Failed to create sd_device object for '%s': %m", device);
+                return log_debug_errno(r, "Failed to create sd_device object for '%s': %m", device);
 
-        return 0;
+        return 1;
 }
index 42c88781868f2d6a9ec0ce94d29f4325126ab074..42a492cc59eee2688ad2917b8eba13709a3c85bb 100644 (file)
@@ -1169,13 +1169,13 @@ static int on_inotify(sd_event_source *s, int fd, uint32_t revents, void *userda
                 _cleanup_(sd_device_unrefp) sd_device *dev = NULL;
                 const char *devnode;
 
-                if (udev_watch_lookup(e->wd, &dev) < 0)
+                if (udev_watch_lookup(e->wd, &dev) <= 0)
                         continue;
 
                 if (sd_device_get_devname(dev, &devnode) < 0)
                         continue;
 
-                log_debug("inotify event: %x for %s", e->mask, devnode);
+                log_device_debug(dev, "Inotify event: %x for %s", e->mask, devnode);
                 if (e->mask & IN_CLOSE_WRITE) {
                         synthesize_change(dev);