From 6442c2109c18af9fd208b2631cacaf1347c384a7 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 30 Nov 2017 17:55:04 +0900 Subject: [PATCH] mount: ignore error when stop non-existing automount unit The command `systemd-mount -u` tries to stop both mount and automount units. If the corresponding mount unit does not exist, then it is user's fault, that is, the specified path is not a mount point. However, not all mount units have corresponding autmount units. Thus, the error about non-existing automount unit is not user's falut, and showing the error may confuse users. So, let's ignore the error of such case. --- src/mount/mount-tool.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/mount/mount-tool.c b/src/mount/mount-tool.c index dd5f62e..f9ac20b 100644 --- a/src/mount/mount-tool.c +++ b/src/mount/mount-tool.c @@ -829,7 +829,7 @@ static int stop_mount( r = unit_name_from_path(where, suffix, &mount_unit); if (r < 0) - return log_error_errno(r, "Failed to make mount unit name from path %s: %m", where); + return log_error_errno(r, "Failed to make %s unit name from path %s: %m", suffix + 1, where); r = sd_bus_message_new_method_call( bus, @@ -853,8 +853,12 @@ static int stop_mount( polkit_agent_open_if_enabled(arg_transport, arg_ask_password); r = sd_bus_call(bus, m, 0, &error, &reply); - if (r < 0) - return log_error_errno(r, "Failed to stop mount unit: %s", bus_error_message(&error, r)); + if (r < 0) { + if (streq(suffix, ".automount") && + sd_bus_error_has_name(&error, "org.freedesktop.systemd1.NoSuchUnit")) + return 0; + return log_error_errno(r, "Failed to stop %s unit: %s", suffix + 1, bus_error_message(&error, r)); + } if (w) { const char *object; -- 2.7.4