]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
mount: ignore error when stop non-existing automount unit
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 30 Nov 2017 08:55:04 +0000 (17:55 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 2 Dec 2017 15:28:59 +0000 (00:28 +0900)
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

index dd5f62e824c72892aa58a848507f80d7690c2267..f9ac20be5b80ce960b82576738b58f357e0a41f6 100644 (file)
@@ -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;