core: move debug logging from _can_live_mount() functions to caller

Let's debug log the returned dbus error where we want the logging, but
don't log it, where we don't.

This removes the noisy logging from the property handler for the
CanLiveMount property, but keeps it in place for the MountImage() method
call where we want it.

Alternative to #34175

Follow-up for 5162829ec8 and 1cafbecabe
This commit is contained in:
Lennart Poettering
2024-10-16 10:50:15 +02:00
parent dc851222cd
commit d24d546dd1
3 changed files with 9 additions and 19 deletions
+1 -1
View File
@@ -168,7 +168,7 @@ static int bus_service_method_mount(sd_bus_message *message, void *userdata, sd_
r = unit_can_live_mount(u, error);
if (r < 0)
return r;
return log_unit_debug_errno(u, r, "Cannot schedule live mount operation: %s", bus_error_message(error, r));
r = mac_selinux_unit_access_check(u, message, "start", error);
if (r < 0)
+2 -8
View File
@@ -5309,18 +5309,12 @@ static int service_can_live_mount(const Unit *u, sd_bus_error *error) {
assert(u);
/* Ensure that the unit runs in a private mount namespace */
if (!exec_needs_mount_namespace(unit_get_exec_context(u), /* params= */ NULL, unit_get_exec_runtime(u))) {
/* This is also called in property_get_can_live_mount(). Suppress the debugging log when called in it. */
if (error)
log_unit_debug(u, "Unit not running in private mount namespace, cannot live mount");
if (!exec_needs_mount_namespace(unit_get_exec_context(u), /* params= */ NULL, unit_get_exec_runtime(u)))
return sd_bus_error_setf(
error,
SD_BUS_ERROR_INVALID_ARGS,
"Live mounting for unit '%s' cannot be scheduled: unit not running in private mount namespace",
"Unit '%s' not running in private mount namespace, cannot live mount.",
u->id);
}
return 0;
}
+6 -10
View File
@@ -6396,24 +6396,20 @@ Condition *unit_find_failed_condition(Unit *u) {
int unit_can_live_mount(const Unit *u, sd_bus_error *error) {
assert(u);
if (!UNIT_VTABLE(u)->live_mount) {
log_unit_debug(u, "Live mounting not supported for unit type '%s'", unit_type_to_string(u->type));
if (!UNIT_VTABLE(u)->live_mount)
return sd_bus_error_setf(
error,
SD_BUS_ERROR_INVALID_ARGS,
"Live mounting for unit '%s' cannot be scheduled: live mounting not supported for unit type '%s'",
u->id,
unit_type_to_string(u->type));
}
"Live mounting not supported for unit type '%s' of unit '%s'.",
unit_type_to_string(u->type),
u->id);
if (u->load_state != UNIT_LOADED) {
log_unit_debug(u, "Unit not loaded");
if (u->load_state != UNIT_LOADED)
return sd_bus_error_setf(
error,
BUS_ERROR_NO_SUCH_UNIT,
"Live mounting for unit '%s' cannot be scheduled: unit not loaded",
"Unit '%s' not loaded, cannot live mount.",
u->id);
}
if (!UNIT_VTABLE(u)->can_live_mount)
return 0;