]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udevadm-settle: make failure in udev_ctrl_new() critical
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 27 Aug 2022 15:31:13 +0000 (00:31 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 29 Aug 2022 04:40:54 +0000 (13:40 +0900)
It should not fail in general.

src/udev/udevadm-settle.c

index 2404442fd76c687707d3d58964002f4928f405d1..50972847f256da6063f5f4651923fa8ce6e8a44f 100644 (file)
@@ -176,21 +176,24 @@ int settle_main(int argc, char *argv[], void *userdata) {
 
         deadline = now(CLOCK_MONOTONIC) + arg_timeout;
 
-        /* guarantee that the udev daemon isn't pre-processing */
         if (getuid() == 0) {
                 _cleanup_(udev_ctrl_unrefp) UdevCtrl *uctrl = NULL;
 
-                if (udev_ctrl_new(&uctrl) >= 0) {
-                        r = udev_ctrl_send_ping(uctrl);
-                        if (r < 0) {
-                                log_debug_errno(r, "Failed to connect to udev daemon: %m");
-                                return 0;
-                        }
+                /* guarantee that the udev daemon isn't pre-processing */
 
-                        r = udev_ctrl_wait(uctrl, MAX(5 * USEC_PER_SEC, arg_timeout));
-                        if (r < 0)
-                                return log_error_errno(r, "Failed to wait for daemon to reply: %m");
+                r = udev_ctrl_new(&uctrl);
+                if (r < 0)
+                        return log_error_errno(r, "Failed to create control socket for udev daemon: %m");
+
+                r = udev_ctrl_send_ping(uctrl);
+                if (r < 0) {
+                        log_debug_errno(r, "Failed to connect to udev daemon, ignoring: %m");
+                        return 0;
                 }
+
+                r = udev_ctrl_wait(uctrl, MAX(5 * USEC_PER_SEC, arg_timeout));
+                if (r < 0)
+                        return log_error_errno(r, "Failed to wait for daemon to reply: %m");
         }
 
         fd = udev_queue_init();