summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac9
-rw-r--r--libmount/src/context.c4
-rw-r--r--libmount/src/tab_parse.c5
3 files changed, 17 insertions, 1 deletions
diff --git a/configure.ac b/configure.ac
index 118dcb777..c846efbda 100644
--- a/configure.ac
+++ b/configure.ac
@@ -851,6 +851,15 @@ AC_SUBST([LIBMOUNT_PATCH_VERSION], $PACKAGE_VERSION_RELEASE)
AC_SUBST([LIBMOUNT_VERSION_INFO])
AC_DEFINE_UNQUOTED([LIBMOUNT_VERSION], ["$LIBMOUNT_VERSION"], [libmount version string])
+AC_ARG_ENABLE([libmount-force-mountinfo],
+ AS_HELP_STRING([--enable-libmount-force-mountinfo], [ignore /etc/mtab in all situations (recommended for systemd)]),
+ [], [enable_libmount_force_mountinfo=no]
+)
+
+AS_IF([test "x$enable_libmount_force_mountinfo" == xyes], [
+ AC_DEFINE([USE_LIBMOUNT_FORCE_MOUNTINFO], [1], [Define to 1 if want to ignore mtab in all situations.])
+])
+
dnl
dnl libsmartcols
diff --git a/libmount/src/context.c b/libmount/src/context.c
index c902f396e..0fb9f6f80 100644
--- a/libmount/src/context.c
+++ b/libmount/src/context.c
@@ -219,7 +219,11 @@ static int context_init_paths(struct libmnt_context *cxt, int writable)
DBG(CXT, ul_debugobj(cxt, "checking for writable tab files"));
+#ifdef USE_LIBMOUNT_FORCE_MOUNTINFO
+ cxt->mtab_writable = 0;
+#else
mnt_has_regular_mtab(&cxt->mtab_path, &cxt->mtab_writable);
+#endif
if (!cxt->mtab_writable)
/* use /run/mount/utab if /etc/mtab is useless */
diff --git a/libmount/src/tab_parse.c b/libmount/src/tab_parse.c
index 2757d0fee..0f87730ee 100644
--- a/libmount/src/tab_parse.c
+++ b/libmount/src/tab_parse.c
@@ -1052,6 +1052,9 @@ int __mnt_table_parse_mtab(struct libmnt_table *tb, const char *filename,
assert(tb);
+#ifdef USE_LIBMOUNT_FORCE_MOUNTINFO
+ DBG(TAB, ul_debugobj(tb, "mtab parse: ignore %s", filename ? filename : "mtab"));
+#else
if (mnt_has_regular_mtab(&filename, NULL)) {
DBG(TAB, ul_debugobj(tb, "force mtab usage [filename=%s]", filename));
@@ -1069,7 +1072,7 @@ int __mnt_table_parse_mtab(struct libmnt_table *tb, const char *filename,
return 0;
filename = NULL; /* failed */
}
-
+#endif
DBG(TAB, ul_debugobj(tb, "mtab parse: #1 read mountinfo"));
/*