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 for5162829ec8and1cafbecabe
This commit is contained in:
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user