public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/systemd] rawhide: Backport patch for udevadm settle
@ 2026-09-08 13:31 
  0 siblings, 0 replies; only message in thread
From:  @ 2026-09-08 13:31 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/systemd
            Branch : rawhide
            Commit : 2470dce82d372fe435c63355310803c143abb70c
            Author : Zbigniew Jędrzejewski-Szmek <zbyszek@amutable.com>
            Date   : 2026-09-08T15:15:24+02:00
            Stats  : +104/-0 in 2 file(s)
            URL    : https://src.fedoraproject.org/rpms/systemd/c/2470dce82d372fe435c63355310803c143abb70c?branch=rawhide

            Log:
            Backport patch for udevadm settle

C.f. https://forge.fedoraproject.org/releng/compose-tracker-issues/issues/9573.

---
diff --git a/43689.patch b/43689.patch
new file mode 100644
index 0000000..653afc9
--- /dev/null
+++ b/43689.patch
@@ -0,0 +1,100 @@
+From a4ccfd2909543fd954765b50ab67b05203e1edb8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@amutable.com>
+Date: Tue, 8 Sep 2026 14:04:01 +0200
+Subject: [PATCH] udevadm: restore noop behaviour when udevd is not running
+
+This partially reverts 17e911ffc853c54f44edd11ead8b6edab72c1217.
+Previously 'udevadm settle' would silently succeed if udevd was not
+reachable. Restore this behaviour.
+
+C.f. https://forge.fedoraproject.org/releng/compose-tracker-issues/issues/9573.
+---
+ src/udev/udevadm-settle.c  |  4 ++--
+ src/udev/udevadm-trigger.c |  3 ++-
+ src/udev/udevadm-util.c    | 14 ++++++++++----
+ src/udev/udevadm-util.h    |  2 +-
+ 4 files changed, 15 insertions(+), 8 deletions(-)
+
+diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c
+index 43d82f2b2702..88f28b4c8a57 100644
+--- a/src/udev/udevadm-settle.c
++++ b/src/udev/udevadm-settle.c
+@@ -194,8 +194,8 @@ int verb_settle_main(int argc, char *argv[], uintptr_t _data, void *userdata) {
+         (void) emit_deprecation_warning();
+ 
+         if (getuid() == 0) {
+-                r = udev_ping(MAX(5 * USEC_PER_SEC, arg_timeout_usec));
+-                if (r < 0)
++                r = udev_ping(MAX(5 * USEC_PER_SEC, arg_timeout_usec), /* ignore_connection_failure= */ true);
++                if (r <= 0)
+                         return r;
+         } else {
+                 /* For non-privileged users, at least check if udevd is running. */
+diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c
+index 9eeef37ffe1d..7c23ccf1c2ff 100644
+--- a/src/udev/udevadm-trigger.c
++++ b/src/udev/udevadm-trigger.c
+@@ -506,9 +506,10 @@ int verb_trigger_main(int argc, char *argv[], uintptr_t _data, void *userdata) {
+                 return r;
+ 
+         if (arg_ping) {
+-                r = udev_ping(arg_ping_timeout_usec);
++                r = udev_ping(arg_ping_timeout_usec, /* ignore_connection_failure= */ false);
+                 if (r < 0)
+                         return r;
++                assert(r > 0);
+         }
+ 
+         if (arg_settle) {
+diff --git a/src/udev/udevadm-util.c b/src/udev/udevadm-util.c
+index 7c0c9601e0fb..8182fcb5576d 100644
+--- a/src/udev/udevadm-util.c
++++ b/src/udev/udevadm-util.c
+@@ -8,6 +8,7 @@
+ #include "conf-files.h"
+ #include "constants.h"
+ #include "device-private.h"
++#include "errno-util.h"
+ #include "extract-word.h"
+ #include "log.h"
+ #include "path-util.h"
+@@ -172,19 +173,24 @@ int parse_key_value_argument(const char *str, bool require_value, char **key, ch
+         return 0;
+ }
+ 
+-int udev_ping(usec_t timeout_usec) {
++int udev_ping(usec_t timeout_usec, bool ignore_connection_failure) {
+         _cleanup_(sd_varlink_flush_close_unrefp) sd_varlink *link = NULL;
+         int r;
+ 
+         r = udev_varlink_connect(&link, timeout_usec);
+-        if (r < 0)
+-                return log_error_errno(r, "Failed to connect to udev via varlink: %m");
++        if (r < 0) {
++                bool ignore = ignore_connection_failure && (ERRNO_IS_NEG_DISCONNECT(r) || r == -ENOENT);
++                log_full_errno(ignore ? LOG_DEBUG : LOG_ERR, r,
++                               "Failed to connect to udev via varlink%s: %m",
++                               ignore ? ", ignoring" : "");
++                return ignore ? 0 : r;  /* nothing to do or error */
++        }
+ 
+         r = varlink_call_and_log(link, "io.systemd.service.Ping", /* parameters= */ NULL, /* reply= */ NULL);
+         if (r < 0)
+                 return r;
+ 
+-        return 0;
++        return 1;  /* received reply from udevd */
+ }
+ 
+ static int search_rules_file_in_conf_dirs(const char *s, const char *root, ConfFile ***files, size_t *n_files) {
+diff --git a/src/udev/udevadm-util.h b/src/udev/udevadm-util.h
+index dc3d6bb83302..906479825ca3 100644
+--- a/src/udev/udevadm-util.h
++++ b/src/udev/udevadm-util.h
+@@ -11,5 +11,5 @@ int find_device_with_action(const char *id, sd_device_action_t action, sd_device
+ int parse_device_action(const char *str, sd_device_action_t *ret);
+ int parse_resolve_name_timing(const char *str, ResolveNameTiming *ret);
+ int parse_key_value_argument(const char *str, bool require_value, char **key, char **value);
+-int udev_ping(usec_t timeout);
++int udev_ping(usec_t timeout, bool ignore_connection_failure);
+ int search_rules_files(char * const *a, const char *root, ConfFile ***ret_files, size_t *ret_n_files);

diff --git a/systemd.spec b/systemd.spec
index 31b4ff2..33c4e63 100644
--- a/systemd.spec
+++ b/systemd.spec
@@ -168,6 +168,10 @@ Patch:          0002-machined-continue-without-resolve.hook-socket.patch
 #  https://src.fedoraproject.org/rpms/selinux-policy/pull-request/675)
 Patch:          0001-units-allow-disabling-systemd-coredumpd.service.patch
 
+# Backport patch to restore noop behaviour of udevadm settle if udevd is
+# not running.
+Patch:          https://github.com/systemd/systemd/pull/43689.patch
+
 %endif
 
 %ifarch %{ix86} x86_64 aarch64 riscv64

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-09-08 13:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-08 13:31 [rpms/systemd] rawhide: Backport patch for udevadm settle 

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox