87 lines
2.5 KiB
Diff
87 lines
2.5 KiB
Diff
|
From 7cc9fe69d3f35038b7b3329fef0cccdbe38ffef6 Mon Sep 17 00:00:00 2001
|
||
|
From: Karel Zak <kzak@redhat.com>
|
||
|
Date: Mon, 13 Dec 2021 13:22:56 +0100
|
||
|
Subject: mount: add hint about systemctl daemon-reload
|
||
|
|
||
|
This commit implements an extra hint for systemd based distros to
|
||
|
inform users that units currently used by systemd are older than
|
||
|
fstab. This situation is usually unwanted, and 'systemctl
|
||
|
daemon-reload' is recommended.
|
||
|
|
||
|
The message is printed only on terminal to avoid extra messages in
|
||
|
logs, etc.
|
||
|
|
||
|
Addresses: https://github.com/systemd/systemd/pull/20476
|
||
|
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2180413
|
||
|
Upstream: http://github.com/util-linux/util-linux/commit/1db0715169954a8f3898f7ca9d3902cd6c27084d
|
||
|
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||
|
---
|
||
|
include/pathnames.h | 2 ++
|
||
|
sys-utils/mount.c | 23 +++++++++++++++++++++++
|
||
|
2 files changed, 25 insertions(+)
|
||
|
|
||
|
diff --git a/include/pathnames.h b/include/pathnames.h
|
||
|
index 77f8b6e85..19b117cb9 100644
|
||
|
--- a/include/pathnames.h
|
||
|
+++ b/include/pathnames.h
|
||
|
@@ -76,6 +76,8 @@
|
||
|
#define _PATH_NUMLOCK_ON _PATH_RUNSTATEDIR "/numlock-on"
|
||
|
#define _PATH_LOGINDEFS "/etc/login.defs"
|
||
|
|
||
|
+#define _PATH_SD_UNITSLOAD _PATH_RUNSTATEDIR "/systemd/systemd-units-load"
|
||
|
+
|
||
|
/* misc paths */
|
||
|
#define _PATH_WORDS "/usr/share/dict/words"
|
||
|
#define _PATH_WORDS_ALT "/usr/share/dict/web2"
|
||
|
diff --git a/sys-utils/mount.c b/sys-utils/mount.c
|
||
|
index 83cccf63e..108b55001 100644
|
||
|
--- a/sys-utils/mount.c
|
||
|
+++ b/sys-utils/mount.c
|
||
|
@@ -38,6 +38,7 @@
|
||
|
#include "strutils.h"
|
||
|
#include "closestream.h"
|
||
|
#include "canonicalize.h"
|
||
|
+#include "pathnames.h"
|
||
|
|
||
|
#define XALLOC_EXIT_CODE MNT_EX_SYSERR
|
||
|
#include "xalloc.h"
|
||
|
@@ -287,6 +288,25 @@ static void selinux_warning(struct libmnt_context *cxt, const char *tgt)
|
||
|
# define selinux_warning(_x, _y)
|
||
|
#endif
|
||
|
|
||
|
+static void systemd_hint(void)
|
||
|
+{
|
||
|
+ static int fstab_check_done = 0;
|
||
|
+
|
||
|
+ if (fstab_check_done == 0) {
|
||
|
+ struct stat a, b;
|
||
|
+
|
||
|
+ if (isatty(STDERR_FILENO) &&
|
||
|
+ stat(_PATH_SD_UNITSLOAD, &a) == 0 &&
|
||
|
+ stat(_PATH_MNTTAB, &b) == 0 &&
|
||
|
+ cmp_stat_mtime(&a, &b, <))
|
||
|
+ printf(_(
|
||
|
+ "mount: (hint) your fstab has been modified, but systemd still uses\n"
|
||
|
+ " the old version; use 'systemctl daemon-reload' to reload.\n"));
|
||
|
+
|
||
|
+ fstab_check_done = 1;
|
||
|
+ }
|
||
|
+}
|
||
|
+
|
||
|
/*
|
||
|
* Returns exit status (MNT_EX_*) and/or prints error message.
|
||
|
*/
|
||
|
@@ -310,6 +330,9 @@ static int mk_exit_code(struct libmnt_context *cxt, int rc)
|
||
|
if (rc == MNT_EX_SUCCESS && mnt_context_get_status(cxt) == 1) {
|
||
|
selinux_warning(cxt, tgt);
|
||
|
}
|
||
|
+
|
||
|
+ systemd_hint();
|
||
|
+
|
||
|
return rc;
|
||
|
}
|
||
|
|
||
|
--
|
||
|
2.39.2
|
||
|
|