613b6e
From 871ee2f08715f8fae441786db04ba8497822f79a Mon Sep 17 00:00:00 2001
613b6e
From: Daan De Meyer <daan.j.demeyer@gmail.com>
613b6e
Date: Tue, 8 Oct 2024 16:22:58 +0200
613b6e
Subject: [PATCH 1/3] bus-util: Log more information when connecting to a bus
613b6e
 socket fails
613b6e
613b6e
Let's log about which bus we're trying to connect to and what transport
613b6e
we're using to do it.
613b6e
613b6e
(cherry picked from commit d8a77d55e6ad7f251ae0eb6758af6bba111095df)
613b6e
---
613b6e
 src/analyze/analyze-blame.c             |  2 +-
613b6e
 src/analyze/analyze-critical-chain.c    |  2 +-
613b6e
 src/analyze/analyze-dot.c               |  2 +-
613b6e
 src/analyze/analyze-dump.c              |  2 +-
613b6e
 src/analyze/analyze-fdstore.c           |  2 +-
613b6e
 src/analyze/analyze-log-control.c       |  2 +-
613b6e
 src/analyze/analyze-malloc.c            |  2 +-
613b6e
 src/analyze/analyze-plot.c              |  2 +-
613b6e
 src/analyze/analyze-security.c          |  2 +-
613b6e
 src/analyze/analyze-service-watchdogs.c |  2 +-
613b6e
 src/analyze/analyze-time.c              |  2 +-
613b6e
 src/busctl/busctl.c                     |  2 +-
613b6e
 src/cgls/cgls.c                         |  9 ++++-----
613b6e
 src/firstboot/firstboot.c               |  4 ++--
613b6e
 src/home/homectl.c                      |  2 +-
613b6e
 src/hostname/hostnamectl.c              |  2 +-
613b6e
 src/import/importctl.c                  |  2 +-
613b6e
 src/locale/localectl.c                  |  2 +-
613b6e
 src/login/inhibit.c                     |  2 +-
613b6e
 src/login/loginctl.c                    |  2 +-
613b6e
 src/machine/machinectl.c                |  2 +-
613b6e
 src/mount/mount-tool.c                  |  2 +-
613b6e
 src/portable/portablectl.c              |  2 +-
613b6e
 src/run/run.c                           |  2 +-
613b6e
 src/shared/bus-util.c                   | 18 ++++++++++++++----
613b6e
 src/shared/bus-util.h                   |  4 +++-
613b6e
 src/shared/cgroup-show.c                |  2 +-
613b6e
 src/systemctl/systemctl-util.c          |  2 +-
613b6e
 src/timedate/timedatectl.c              |  2 +-
613b6e
 29 files changed, 48 insertions(+), 37 deletions(-)
613b6e
613b6e
diff --git a/src/analyze/analyze-blame.c b/src/analyze/analyze-blame.c
613b6e
index 81e5c590b9cc2..4d78ed405d7d4 100644
613b6e
--- a/src/analyze/analyze-blame.c
613b6e
+++ b/src/analyze/analyze-blame.c
613b6e
@@ -14,7 +14,7 @@ int verb_blame(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, NULL);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         n = acquire_time_data(bus, /* require_finished = */ false, ×);
613b6e
         if (n <= 0)
613b6e
diff --git a/src/analyze/analyze-critical-chain.c b/src/analyze/analyze-critical-chain.c
613b6e
index 7d78de3d388d1..03c014d4023e6 100644
613b6e
--- a/src/analyze/analyze-critical-chain.c
613b6e
+++ b/src/analyze/analyze-critical-chain.c
613b6e
@@ -200,7 +200,7 @@ int verb_critical_chain(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, NULL);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         n = acquire_time_data(bus, /* require_finished = */ true, ×);
613b6e
         if (n <= 0)
613b6e
diff --git a/src/analyze/analyze-dot.c b/src/analyze/analyze-dot.c
613b6e
index 9e92d59bceeee..b93bf4a9a5bb0 100644
613b6e
--- a/src/analyze/analyze-dot.c
613b6e
+++ b/src/analyze/analyze-dot.c
613b6e
@@ -149,7 +149,7 @@ int verb_dot(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, NULL);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         r = expand_patterns(bus, strv_skip(argv, 1), &expanded_patterns);
613b6e
         if (r < 0)
613b6e
diff --git a/src/analyze/analyze-dump.c b/src/analyze/analyze-dump.c
613b6e
index 2642582903b09..4ee547ed4c969 100644
613b6e
--- a/src/analyze/analyze-dump.c
613b6e
+++ b/src/analyze/analyze-dump.c
613b6e
@@ -123,7 +123,7 @@ int verb_dump(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, NULL);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         pager_open(arg_pager_flags);
613b6e
 
613b6e
diff --git a/src/analyze/analyze-fdstore.c b/src/analyze/analyze-fdstore.c
613b6e
index 8ada6d4e73e1f..1f4adb7089ab0 100644
613b6e
--- a/src/analyze/analyze-fdstore.c
613b6e
+++ b/src/analyze/analyze-fdstore.c
613b6e
@@ -98,7 +98,7 @@ int verb_fdstore(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, NULL);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         STRV_FOREACH(arg, strv_skip(argv, 1)) {
613b6e
                 r = dump_fdstore(bus, *arg);
613b6e
diff --git a/src/analyze/analyze-log-control.c b/src/analyze/analyze-log-control.c
613b6e
index cead0e833f5da..854cf6cb806c2 100644
613b6e
--- a/src/analyze/analyze-log-control.c
613b6e
+++ b/src/analyze/analyze-log-control.c
613b6e
@@ -12,7 +12,7 @@ int verb_log_control(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, NULL);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         r = verb_log_control_common(bus, "org.freedesktop.systemd1", argv[0], argc == 2 ? argv[1] : NULL);
613b6e
         if (r < 0)
613b6e
diff --git a/src/analyze/analyze-malloc.c b/src/analyze/analyze-malloc.c
613b6e
index 5e6ff5bb9627c..514526d14256a 100644
613b6e
--- a/src/analyze/analyze-malloc.c
613b6e
+++ b/src/analyze/analyze-malloc.c
613b6e
@@ -43,7 +43,7 @@ int verb_malloc(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, NULL);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         r = sd_bus_can_send(bus, SD_BUS_TYPE_UNIX_FD);
613b6e
         if (r < 0)
613b6e
diff --git a/src/analyze/analyze-plot.c b/src/analyze/analyze-plot.c
613b6e
index e271296b6875b..ce67c092c37cd 100644
613b6e
--- a/src/analyze/analyze-plot.c
613b6e
+++ b/src/analyze/analyze-plot.c
613b6e
@@ -468,7 +468,7 @@ int verb_plot(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, &use_full_bus);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         n = acquire_boot_times(bus, /* require_finished = */ true, &boot);
613b6e
         if (n < 0)
613b6e
diff --git a/src/analyze/analyze-security.c b/src/analyze/analyze-security.c
613b6e
index 3d7b647a6f361..d3ba975107297 100644
613b6e
--- a/src/analyze/analyze-security.c
613b6e
+++ b/src/analyze/analyze-security.c
613b6e
@@ -2904,7 +2904,7 @@ int verb_security(int argc, char *argv[], void *userdata) {
613b6e
         if (!arg_offline) {
613b6e
                 r = acquire_bus(&bus, NULL);
613b6e
                 if (r < 0)
613b6e
-                        return bus_log_connect_error(r, arg_transport);
613b6e
+                        return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
         }
613b6e
 
613b6e
         pager_open(arg_pager_flags);
613b6e
diff --git a/src/analyze/analyze-service-watchdogs.c b/src/analyze/analyze-service-watchdogs.c
613b6e
index 6535eb1a894f7..b1fad4328caa5 100644
613b6e
--- a/src/analyze/analyze-service-watchdogs.c
613b6e
+++ b/src/analyze/analyze-service-watchdogs.c
613b6e
@@ -16,7 +16,7 @@ int verb_service_watchdogs(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, NULL);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         if (argc == 1) {
613b6e
                 /* get ServiceWatchdogs */
613b6e
diff --git a/src/analyze/analyze-time.c b/src/analyze/analyze-time.c
613b6e
index c233b1f08558e..8135112dec42b 100644
613b6e
--- a/src/analyze/analyze-time.c
613b6e
+++ b/src/analyze/analyze-time.c
613b6e
@@ -11,7 +11,7 @@ int verb_time(int argc, char *argv[], void *userdata) {
613b6e
 
613b6e
         r = acquire_bus(&bus, NULL);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         r = pretty_boot_time(bus, &buf;;
613b6e
         if (r < 0)
613b6e
diff --git a/src/busctl/busctl.c b/src/busctl/busctl.c
613b6e
index 8db9076997232..bbd36c1dc42bc 100644
613b6e
--- a/src/busctl/busctl.c
613b6e
+++ b/src/busctl/busctl.c
613b6e
@@ -152,7 +152,7 @@ static int acquire_bus(bool set_monitor, sd_bus **ret) {
613b6e
 
613b6e
         r = sd_bus_start(bus);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         *ret = TAKE_PTR(bus);
613b6e
 
613b6e
diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c
613b6e
index 70fa260246929..1dcd316cdb379 100644
613b6e
--- a/src/cgls/cgls.c
613b6e
+++ b/src/cgls/cgls.c
613b6e
@@ -221,13 +221,12 @@ static int run(int argc, char *argv[]) {
613b6e
                                         return log_error_errno(r, "Failed to mangle unit name: %m");
613b6e
 
613b6e
                                 if (!bus) {
613b6e
+                                        RuntimeScope scope = arg_show_unit == SHOW_UNIT_USER ? RUNTIME_SCOPE_USER : RUNTIME_SCOPE_SYSTEM;
613b6e
+
613b6e
                                         /* Connect to the bus only if necessary */
613b6e
-                                        r = bus_connect_transport_systemd(
613b6e
-                                                        BUS_TRANSPORT_LOCAL, NULL,
613b6e
-                                                        arg_show_unit == SHOW_UNIT_USER ? RUNTIME_SCOPE_USER : RUNTIME_SCOPE_SYSTEM,
613b6e
-                                                        &bus;;
613b6e
+                                        r = bus_connect_transport_systemd(BUS_TRANSPORT_LOCAL, NULL, scope, &bus;;
613b6e
                                         if (r < 0)
613b6e
-                                                return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL);
613b6e
+                                                return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL, scope);
613b6e
                                 }
613b6e
 
613b6e
                                 q = show_cgroup_get_unit_path_and_warn(bus, unit_name, &cgroup);
613b6e
diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c
613b6e
index 0dbdfc663871f..3b732b38609ab 100644
613b6e
--- a/src/firstboot/firstboot.c
613b6e
+++ b/src/firstboot/firstboot.c
613b6e
@@ -1616,7 +1616,7 @@ static int reload_system_manager(sd_bus **bus) {
613b6e
         if (!*bus) {
613b6e
                 r = bus_connect_transport_systemd(BUS_TRANSPORT_LOCAL, NULL, RUNTIME_SCOPE_SYSTEM, bus);
613b6e
                 if (r < 0)
613b6e
-                        return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL);
613b6e
+                        return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL, RUNTIME_SCOPE_SYSTEM);
613b6e
         }
613b6e
 
613b6e
         r = bus_service_manager_reload(*bus);
613b6e
@@ -1639,7 +1639,7 @@ static int reload_vconsole(sd_bus **bus) {
613b6e
         if (!*bus) {
613b6e
                 r = bus_connect_transport_systemd(BUS_TRANSPORT_LOCAL, NULL, RUNTIME_SCOPE_SYSTEM, bus);
613b6e
                 if (r < 0)
613b6e
-                        return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL);
613b6e
+                        return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL, RUNTIME_SCOPE_SYSTEM);
613b6e
         }
613b6e
 
613b6e
         r = bus_wait_for_jobs_new(*bus, &w);
613b6e
diff --git a/src/home/homectl.c b/src/home/homectl.c
613b6e
index 346daa1195ccd..36e3bf729948f 100644
613b6e
--- a/src/home/homectl.c
613b6e
+++ b/src/home/homectl.c
613b6e
@@ -134,7 +134,7 @@ static int acquire_bus(sd_bus **bus) {
613b6e
 
613b6e
         r = bus_connect_transport(arg_transport, arg_host, RUNTIME_SCOPE_SYSTEM, bus);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
         (void) sd_bus_set_allow_interactive_authorization(*bus, arg_ask_password);
613b6e
 
613b6e
diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c
613b6e
index d1c4d476f66b9..ead0cc4da6e82 100644
613b6e
--- a/src/hostname/hostnamectl.c
613b6e
+++ b/src/hostname/hostnamectl.c
613b6e
@@ -813,7 +813,7 @@ static int run(int argc, char *argv[]) {
613b6e
 
613b6e
         r = bus_connect_transport(arg_transport, arg_host, RUNTIME_SCOPE_SYSTEM, &bus;;
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
         return hostnamectl_main(bus, argc, argv);
613b6e
 }
613b6e
diff --git a/src/import/importctl.c b/src/import/importctl.c
613b6e
index f939d80815dca..da9e5b62d23d6 100644
613b6e
--- a/src/import/importctl.c
613b6e
+++ b/src/import/importctl.c
613b6e
@@ -1235,7 +1235,7 @@ static int run(int argc, char *argv[]) {
613b6e
 
613b6e
         r = bus_connect_transport(arg_transport, arg_host, RUNTIME_SCOPE_SYSTEM, &bus;;
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
         (void) sd_bus_set_allow_interactive_authorization(bus, arg_ask_password);
613b6e
 
613b6e
diff --git a/src/locale/localectl.c b/src/locale/localectl.c
613b6e
index 32354027f1755..2fb4657fe24fb 100644
613b6e
--- a/src/locale/localectl.c
613b6e
+++ b/src/locale/localectl.c
613b6e
@@ -527,7 +527,7 @@ static int run(int argc, char *argv[]) {
613b6e
 
613b6e
         r = bus_connect_transport(arg_transport, arg_host, RUNTIME_SCOPE_SYSTEM, &bus;;
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
         return localectl_main(bus, argc, argv);
613b6e
 }
613b6e
diff --git a/src/login/inhibit.c b/src/login/inhibit.c
613b6e
index 4682830d198a8..e060c614004b1 100644
613b6e
--- a/src/login/inhibit.c
613b6e
+++ b/src/login/inhibit.c
613b6e
@@ -265,7 +265,7 @@ static int run(int argc, char *argv[]) {
613b6e
 
613b6e
         r = sd_bus_default_system(&bus;;
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL);
613b6e
+                return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
         if (arg_action == ACTION_LIST)
613b6e
                 return print_inhibitors(bus);
613b6e
diff --git a/src/login/loginctl.c b/src/login/loginctl.c
613b6e
index cf3bff437a0bc..e950bfc985ff5 100644
613b6e
--- a/src/login/loginctl.c
613b6e
+++ b/src/login/loginctl.c
613b6e
@@ -1727,7 +1727,7 @@ static int run(int argc, char *argv[]) {
613b6e
 
613b6e
         r = bus_connect_transport(arg_transport, arg_host, RUNTIME_SCOPE_SYSTEM, &bus;;
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
         (void) sd_bus_set_allow_interactive_authorization(bus, arg_ask_password);
613b6e
 
613b6e
diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c
613b6e
index 1b63e6d203786..b9105f298b6b1 100644
613b6e
--- a/src/machine/machinectl.c
613b6e
+++ b/src/machine/machinectl.c
613b6e
@@ -2446,7 +2446,7 @@ static int run(int argc, char *argv[]) {
613b6e
 
613b6e
         r = bus_connect_transport(arg_transport, arg_host, RUNTIME_SCOPE_SYSTEM, &bus;;
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
         (void) sd_bus_set_allow_interactive_authorization(bus, arg_ask_password);
613b6e
 
613b6e
diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c
613b6e
index fcebdcaf18c9b..b991bed714896 100644
613b6e
--- a/src/mount/mount-tool.c
613b6e
+++ b/src/mount/mount-tool.c
613b6e
@@ -1503,7 +1503,7 @@ static int run(int argc, char* argv[]) {
613b6e
 
613b6e
         r = bus_connect_transport_systemd(arg_transport, arg_host, arg_runtime_scope, &bus;;
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         if (arg_action == ACTION_UMOUNT)
613b6e
                 return action_umount(bus, argc, argv);
613b6e
diff --git a/src/portable/portablectl.c b/src/portable/portablectl.c
613b6e
index 57b930d6cba41..2681cf4dd2070 100644
613b6e
--- a/src/portable/portablectl.c
613b6e
+++ b/src/portable/portablectl.c
613b6e
@@ -229,7 +229,7 @@ static int acquire_bus(sd_bus **bus) {
613b6e
 
613b6e
         r = bus_connect_transport(arg_transport, arg_host, RUNTIME_SCOPE_SYSTEM, bus);
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
         (void) sd_bus_set_allow_interactive_authorization(*bus, arg_ask_password);
613b6e
 
613b6e
diff --git a/src/run/run.c b/src/run/run.c
613b6e
index ba7bb2148a15f..3a7102e32923b 100644
613b6e
--- a/src/run/run.c
613b6e
+++ b/src/run/run.c
613b6e
@@ -2405,7 +2405,7 @@ static int run(int argc, char* argv[]) {
613b6e
         else
613b6e
                 r = bus_connect_transport_systemd(arg_transport, arg_host, arg_runtime_scope, &bus;;
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
         if (arg_scope)
613b6e
                 return start_transient_scope(bus);
613b6e
diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
613b6e
index 30f9602b1edbc..f347ea604ec25 100644
613b6e
--- a/src/shared/bus-util.c
613b6e
+++ b/src/shared/bus-util.c
613b6e
@@ -28,6 +28,7 @@
613b6e
 #include "path-util.h"
613b6e
 #include "socket-util.h"
613b6e
 #include "stdio-util.h"
613b6e
+#include "string-table.h"
613b6e
 #include "uid-classification.h"
613b6e
 
613b6e
 static int name_owner_change_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
613b6e
@@ -49,14 +50,14 @@ int bus_log_address_error(int r, BusTransport transport) {
613b6e
                                       "Failed to set bus address: %m");
613b6e
 }
613b6e
 
613b6e
-int bus_log_connect_error(int r, BusTransport transport) {
613b6e
+int bus_log_connect_error(int r, BusTransport transport, RuntimeScope scope) {
613b6e
         bool hint_vars = transport == BUS_TRANSPORT_LOCAL && r == -ENOMEDIUM,
613b6e
              hint_addr = transport == BUS_TRANSPORT_LOCAL && ERRNO_IS_PRIVILEGE(r);
613b6e
 
613b6e
         return log_error_errno(r,
613b6e
-                               r == hint_vars ? "Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)" :
613b6e
-                               r == hint_addr ? "Failed to connect to bus: Operation not permitted (consider using --machine=<user>@.host --user to connect to bus of other user)" :
613b6e
-                                                "Failed to connect to bus: %m");
613b6e
+                               r == hint_vars ? "Failed to connect to %s scope bus via %s transport: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)" :
613b6e
+                               r == hint_addr ? "Failed to connect to %s scope bus via %s transport: Operation not permitted (consider using --machine=<user>@.host --user to connect to bus of other user)" :
613b6e
+                                                "Failed to connect to %s scope bus via %s transport: %m", runtime_scope_to_string(scope), bus_transport_to_string(transport));
613b6e
 }
613b6e
 
613b6e
 int bus_async_unregister_and_exit(sd_event *e, sd_bus *bus, const char *name) {
613b6e
@@ -926,3 +927,12 @@ int bus_message_read_id128(sd_bus_message *m, sd_id128_t *ret) {
613b6e
                 return -EINVAL;
613b6e
         }
613b6e
 }
613b6e
+
613b6e
+static const char* const bus_transport_table[] = {
613b6e
+        [BUS_TRANSPORT_LOCAL]   = "local",
613b6e
+        [BUS_TRANSPORT_REMOTE]  = "remote",
613b6e
+        [BUS_TRANSPORT_MACHINE] = "machine",
613b6e
+        [BUS_TRANSPORT_CAPSULE] = "capsule",
613b6e
+};
613b6e
+
613b6e
+DEFINE_STRING_TABLE_LOOKUP_TO_STRING(bus_transport, BusTransport);
613b6e
diff --git a/src/shared/bus-util.h b/src/shared/bus-util.h
613b6e
index 9c6f01d8eb846..fbccb24314fe4 100644
613b6e
--- a/src/shared/bus-util.h
613b6e
+++ b/src/shared/bus-util.h
613b6e
@@ -48,7 +48,7 @@ int bus_connect_transport(BusTransport transport, const char *host, RuntimeScope
613b6e
 int bus_connect_transport_systemd(BusTransport transport, const char *host, RuntimeScope runtime_scope, sd_bus **bus);
613b6e
 
613b6e
 int bus_log_address_error(int r, BusTransport transport);
613b6e
-int bus_log_connect_error(int r, BusTransport transport);
613b6e
+int bus_log_connect_error(int r, BusTransport transport, RuntimeScope scope);
613b6e
 
613b6e
 #define bus_log_parse_error(r)                                  \
613b6e
         log_error_errno(r, "Failed to parse bus message: %m")
613b6e
@@ -84,3 +84,5 @@ int bus_creds_get_pidref(sd_bus_creds *c, PidRef *ret);
613b6e
 int bus_query_sender_pidref(sd_bus_message *m, PidRef *ret);
613b6e
 
613b6e
 int bus_message_read_id128(sd_bus_message *m, sd_id128_t *ret);
613b6e
+
613b6e
+const char* bus_transport_to_string(BusTransport transport) _const_;
613b6e
diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
613b6e
index 87177316da8f9..96826ac7d8e87 100644
613b6e
--- a/src/shared/cgroup-show.c
613b6e
+++ b/src/shared/cgroup-show.c
613b6e
@@ -433,7 +433,7 @@ int show_cgroup_get_path_and_warn(
613b6e
 
613b6e
                 r = bus_connect_transport_systemd(BUS_TRANSPORT_LOCAL, NULL, RUNTIME_SCOPE_SYSTEM, &bus;;
613b6e
                 if (r < 0)
613b6e
-                        return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL);
613b6e
+                        return bus_log_connect_error(r, BUS_TRANSPORT_LOCAL, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
                 r = show_cgroup_get_unit_path_and_warn(bus, unit, &root);
613b6e
                 if (r < 0)
613b6e
diff --git a/src/systemctl/systemctl-util.c b/src/systemctl/systemctl-util.c
613b6e
index 38e1f23740ed6..18c8823e3fe70 100644
613b6e
--- a/src/systemctl/systemctl-util.c
613b6e
+++ b/src/systemctl/systemctl-util.c
613b6e
@@ -54,7 +54,7 @@ int acquire_bus(BusFocus focus, sd_bus **ret) {
613b6e
                 else
613b6e
                         r = bus_connect_transport(arg_transport, arg_host, arg_runtime_scope, &buses[focus]);
613b6e
                 if (r < 0)
613b6e
-                        return bus_log_connect_error(r, arg_transport);
613b6e
+                        return bus_log_connect_error(r, arg_transport, arg_runtime_scope);
613b6e
 
613b6e
                 (void) sd_bus_set_allow_interactive_authorization(buses[focus], arg_ask_password);
613b6e
         }
613b6e
diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c
613b6e
index 46ec6b31bc46a..db9f3b22b9b5e 100644
613b6e
--- a/src/timedate/timedatectl.c
613b6e
+++ b/src/timedate/timedatectl.c
613b6e
@@ -1031,7 +1031,7 @@ static int run(int argc, char *argv[]) {
613b6e
 
613b6e
         r = bus_connect_transport(arg_transport, arg_host, RUNTIME_SCOPE_SYSTEM, &bus;;
613b6e
         if (r < 0)
613b6e
-                return bus_log_connect_error(r, arg_transport);
613b6e
+                return bus_log_connect_error(r, arg_transport, RUNTIME_SCOPE_SYSTEM);
613b6e
 
613b6e
         return timedatectl_main(bus, argc, argv);
613b6e
 }
613b6e
613b6e
From 31e38b55b2e4bb1aa42fe106ea14df8e82758303 Mon Sep 17 00:00:00 2001
613b6e
From: Daan De Meyer <daan.j.demeyer@gmail.com>
613b6e
Date: Tue, 8 Oct 2024 16:25:52 +0200
613b6e
Subject: [PATCH 2/3] core: Bump log level of reexecute request to notice
613b6e
613b6e
A daemon-reload is important enough to deserve logging at notice
613b6e
level.
613b6e
613b6e
(cherry picked from commit 4ee41be82507348fbbc9d3ab28aae6330eb51663)
613b6e
---
613b6e
 src/core/dbus-manager.c | 8 ++++----
613b6e
 1 file changed, 4 insertions(+), 4 deletions(-)
613b6e
613b6e
diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
613b6e
index 7da35a803c62c..2412bd1aab742 100644
613b6e
--- a/src/core/dbus-manager.c
613b6e
+++ b/src/core/dbus-manager.c
613b6e
@@ -1571,10 +1571,10 @@ static void log_caller(sd_bus_message *message, Manager *manager, const char *me
613b6e
         (void) sd_bus_creds_get_comm(creds, &comm);
613b6e
         caller = manager_get_unit_by_pid(manager, pid);
613b6e
 
613b6e
-        log_info("%s requested from client PID " PID_FMT "%s%s%s%s%s%s...",
613b6e
-                 method, pid,
613b6e
-                 comm ? " ('" : "", strempty(comm), comm ? "')" : "",
613b6e
-                 caller ? " (unit " : "", caller ? caller->id : "", caller ? ")" : "");
613b6e
+        log_notice("%s requested from client PID " PID_FMT "%s%s%s%s%s%s...",
613b6e
+                   method, pid,
613b6e
+                   comm ? " ('" : "", strempty(comm), comm ? "')" : "",
613b6e
+                   caller ? " (unit " : "", caller ? caller->id : "", caller ? ")" : "");
613b6e
 }
613b6e
 
613b6e
 static int method_reload(sd_bus_message *message, void *userdata, sd_bus_error *error) {
613b6e
613b6e
From 814be7116dda14074749253d94b83387ceff0ff1 Mon Sep 17 00:00:00 2001
613b6e
From: Daan De Meyer <daan.j.demeyer@gmail.com>
613b6e
Date: Tue, 8 Oct 2024 16:28:25 +0200
613b6e
Subject: [PATCH 3/3] core: Log in more scenarios about which process initiated
613b6e
 an operation
613b6e
613b6e
Exit/Reboot/Poweroff and similar operations are invasive enough that
613b6e
logging about who initiated them is very useful to debug issues.
613b6e
613b6e
(cherry picked from commit acb0f501f4291efce82bcf89d4ad92b6a895f4fa)
613b6e
---
613b6e
 src/core/dbus-manager.c | 12 ++++++++++++
613b6e
 1 file changed, 12 insertions(+)
613b6e
613b6e
diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
613b6e
index 2412bd1aab742..0c1260f2d9cbe 100644
613b6e
--- a/src/core/dbus-manager.c
613b6e
+++ b/src/core/dbus-manager.c
613b6e
@@ -1671,6 +1671,8 @@ static int method_exit(sd_bus_message *message, void *userdata, sd_bus_error *er
613b6e
         if (r < 0)
613b6e
                 return r;
613b6e
 
613b6e
+        log_caller(message, m, "Exit");
613b6e
+
613b6e
         /* Exit() (in contrast to SetExitCode()) is actually allowed even if
613b6e
          * we are running on the host. It will fall back on reboot() in
613b6e
          * systemd-shutdown if it cannot do the exit() because it isn't a
613b6e
@@ -1695,6 +1697,8 @@ static int method_reboot(sd_bus_message *message, void *userdata, sd_bus_error *
613b6e
                 return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
613b6e
                                          "Reboot is only supported for system managers.");
613b6e
 
613b6e
+        log_caller(message, m, "Reboot");
613b6e
+
613b6e
         m->objective = MANAGER_REBOOT;
613b6e
 
613b6e
         return sd_bus_reply_method_return(message, NULL);
613b6e
@@ -1737,6 +1741,8 @@ static int method_soft_reboot(sd_bus_message *message, void *userdata, sd_bus_er
613b6e
                         return -ENOMEM;
613b6e
         }
613b6e
 
613b6e
+        log_caller(message, m, "Soft reboot");
613b6e
+
613b6e
         free_and_replace(m->switch_root, rt);
613b6e
         m->objective = MANAGER_SOFT_REBOOT;
613b6e
 
613b6e
@@ -1757,6 +1763,8 @@ static int method_poweroff(sd_bus_message *message, void *userdata, sd_bus_error
613b6e
                 return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
613b6e
                                          "Powering off is only supported for system managers.");
613b6e
 
613b6e
+        log_caller(message, m, "Poweroff");
613b6e
+
613b6e
         m->objective = MANAGER_POWEROFF;
613b6e
 
613b6e
         return sd_bus_reply_method_return(message, NULL);
613b6e
@@ -1776,6 +1784,8 @@ static int method_halt(sd_bus_message *message, void *userdata, sd_bus_error *er
613b6e
                 return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
613b6e
                                          "Halt is only supported for system managers.");
613b6e
 
613b6e
+        log_caller(message, m, "Halt");
613b6e
+
613b6e
         m->objective = MANAGER_HALT;
613b6e
 
613b6e
         return sd_bus_reply_method_return(message, NULL);
613b6e
@@ -1795,6 +1805,8 @@ static int method_kexec(sd_bus_message *message, void *userdata, sd_bus_error *e
613b6e
                 return sd_bus_error_setf(error, SD_BUS_ERROR_NOT_SUPPORTED,
613b6e
                                          "KExec is only supported for system managers.");
613b6e
 
613b6e
+        log_caller(message, m, "Kexec");
613b6e
+
613b6e
         m->objective = MANAGER_KEXEC;
613b6e
 
613b6e
         return sd_bus_reply_method_return(message, NULL);