]> err.no Git - util-linux/commitdiff
mount: avoid duplicate entries in mtab when mount -f
authorKarel Zak <kzak@redhat.com>
Mon, 30 Apr 2007 22:28:08 +0000 (00:28 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 2 May 2007 11:05:14 +0000 (13:05 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
mount/mount.8
mount/mount.c

index 2d7c21896ad4fb2c2c7e63a00375e6b7d633760c..4692a42b3487b8e0db6dc0b7d17cfd214e8aefc8 100644 (file)
@@ -341,7 +341,9 @@ conjunction with the
 flag to determine what the
 .B mount
 command is trying to do. It can also be used to add entries for devices
-that were mounted earlier with the -n option.
+that were mounted earlier with the -n option. The -f option checks for
+existing record in /etc/mtab and fails when the record already
+exists (with regular non-fake mount, this check is done by kernel).
 .TP
 .B \-i
 Don't call the /sbin/mount.<filesystem> helper even if it exists.
index 1526f263a902c0e7cb1e5ddc81d117137d58a753..f54a90e842ac339951fabf9a146f854ddf37939b 100644 (file)
@@ -190,6 +190,8 @@ static const struct opt_map opt_map[] = {
 static const char *opt_loopdev, *opt_vfstype, *opt_offset, *opt_encryption,
        *opt_speed, *opt_comment, *opt_uhelper;
 
+static int mounted (const char *spec0, const char *node0);
+
 static struct string_opt_map {
   char *tag;
   int skip;
@@ -861,6 +863,14 @@ try_mount_one (const char *spec0, const char *node0, const char *types0,
 
   suid_check(spec, node, &flags, &user);
 
+  /* The "mount -f" checks for for existing record in /etc/mtab (with
+   * regular non-fake mount this is usually done by kernel)
+   */
+  if (fake && mounted (spec, node))
+      die(EX_USAGE, _("mount: according to mtab, "
+                      "%s is already mounted on %s\n"),
+                     spec, node);
+
   mount_opts = extra_opts;
 
   if (opt_speed)