From d5c3a14390f6bb2af45a1a4ad842777302dd0553 Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Sat, 3 Jan 2015 15:29:29 +0800 Subject: [PATCH] mount.ceph: avoid spurious error message /etc/mtab in most modern distributions is a symbol link to /proc/self/mounts. Fixes: #10351 Signed-off-by: Yan, Zheng (cherry picked from commit bdd0e3c4bda97fe18487a58dd173a7dff752e1a2) --- src/mount/mtab.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/mount/mtab.c b/src/mount/mtab.c index 9b2c9237e1645..d17f7a55f6cd8 100644 --- a/src/mount/mtab.c +++ b/src/mount/mtab.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -44,6 +45,7 @@ setlkw_timeout (int sig) { #define _PATH_MOUNTED "/etc/mtab" #define _PATH_MOUNTED_LOCK "/etc/mtab~" +#define PROC_SUPER_MAGIC 0x9fa0 /* exit status - bits below are ORed */ #define EX_USAGE 1 /* incorrect invocation or permission */ @@ -245,11 +247,21 @@ lock_mtab (void) { static void update_mtab_entry(const char *spec, const char *node, const char *type, const char *opts, int flags, int freq, int pass) { - struct mntent mnt; + struct statfs buf; + int err = statfs(_PATH_MOUNTED, &buf); + if (err) { + printf("mount: can't statfs %s: %s", _PATH_MOUNTED, + strerror (err)); + return; + } + /* /etc/mtab is symbol link to /proc/self/mounts? */ + if (buf.f_type == PROC_SUPER_MAGIC) + return; if (!opts) opts = "rw"; + struct mntent mnt; mnt.mnt_fsname = strdup(spec); mnt.mnt_dir = canonicalize_path(node); mnt.mnt_type = strdup(type); -- 2.39.5