chiark / gitweb /
manager: only issue overmount warning when the check succeeded
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 6 Nov 2014 03:39:13 +0000 (22:39 -0500)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 24 Nov 2014 00:17:31 +0000 (19:17 -0500)
If for any reason the check failed (selinux?), we would still issue
the warning. Check the return status.

src/core/mount.c

index 8b787f66b09fadcab2bac588bf8a7ad9c148963b..b571db946d4f01c128398a70543afb005353ab6c 100644 (file)
@@ -814,19 +814,26 @@ fail:
 }
 
 void warn_if_dir_nonempty(const char *unit, const char* where) {
+        int r;
+
         assert(unit);
         assert(where);
 
-        if (dir_is_empty(where) > 0)
+        r = dir_is_empty(where);
+        if (r > 0)
                 return;
-
-        log_struct_unit(LOG_NOTICE,
-                   unit,
-                   "MESSAGE=%s: Directory %s to mount over is not empty, mounting anyway.",
-                   unit, where,
-                   "WHERE=%s", where,
-                   MESSAGE_ID(SD_MESSAGE_OVERMOUNTING),
-                   NULL);
+        else if (r == 0)
+                log_struct_unit(LOG_NOTICE,
+                                unit,
+                                "MESSAGE=%s: Directory %s to mount over is not empty, mounting anyway.",
+                                unit, where,
+                                "WHERE=%s", where,
+                                MESSAGE_ID(SD_MESSAGE_OVERMOUNTING),
+                                NULL);
+        else
+                log_warning_unit(unit,
+                                 "MESSAGE=Failed to check directory %s: %s",
+                                 where, strerror(-r));
 }
 
 static int fail_if_symlink(const char *unit, const char* where) {