From: Franck Bui Date: Wed, 14 Jan 2026 09:40:46 +0000 (+0100) Subject: core/dbus-manager: propagate meaningful dbus errors from EnqueueMarkedJobs X-Git-Tag: v260-rc1~388 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=502d6f4bc9b96009627f923dcc0ab53e5a181d78;p=thirdparty%2Fsystemd.git core/dbus-manager: propagate meaningful dbus errors from EnqueueMarkedJobs Previously, when `systemctl reload-or-restart --marked` failed the following error was shown: Failed to start jobs: Failed to enqueue some jobs, see logs for details: Invalid argument but no details were actually logged. This change records failure reasons in the journal to help users identify root causes: # journalctl -b -e [...] systemd[1]: Queuing reload/restart jobs for marked units… systemd[1]: Operation refused, unit klogd.service may be requested by dependency only (it is configured to refuse manual start/stop). --- diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index a2fd5889838..5bd52edc341 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -2125,6 +2125,8 @@ static int method_enqueue_marked_jobs(sd_bus_message *message, void *userdata, s char *k; int ret = 0; HASHMAP_FOREACH_KEY(u, k, m->units) { + _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; + /* ignore aliases */ if (u->id != k) continue; @@ -2137,17 +2139,16 @@ static int method_enqueue_marked_jobs(sd_bus_message *message, void *userdata, s else continue; - r = mac_selinux_unit_access_check(u, message, "start", reterr_error); + r = mac_selinux_unit_access_check(u, message, "start", &error); if (r >= 0) r = bus_unit_queue_job_one(message, u, JOB_TRY_RESTART, JOB_FAIL, flags, - reply, reterr_error); + reply, &error); if (ERRNO_IS_NEG_RESOURCE(r)) return r; if (r < 0) { - if (ret >= 0) - ret = r; - sd_bus_error_free(reterr_error); + RET_GATHER(ret, r); + log_warning_errno(r, "%s", bus_error_message(&error, r)); } }