]> err.no Git - util-linux/commit
mount: get most recently mounted fs from /etc/mtab.
authorValerie Aurora <vaurora@redhat.com>
Wed, 4 Aug 2010 00:09:19 +0000 (20:09 -0400)
committerKarel Zak <kzak@redhat.com>
Wed, 4 Aug 2010 09:46:25 +0000 (11:46 +0200)
commit5d79666f8f7563ed9904a7ce2087f430ee2702b6
treed08764576220783c6fdccc633b6ab314e8a24877
parent60b2bf187e5d30b4cd784ea61d88d3a1126de8fe
mount: get most recently mounted fs from /etc/mtab.

I spent most of the day tracking down this subtle remount bug.  I
think this is the correct solution but I'd appreciate some
double-checking.  I suspect this bug will munge the mount options
whenever you remount a file system mounted on the same mountpoint as
another file system, using the mountpoint as the handle.

-VAL

commit c010b3a0783430e2b94f3b3dc0929ae299e383eb
Author: Valerie Aurora <vaurora@redhat.com>
Date:   Tue Aug 3 16:32:52 2010 -0700

    mount: get most recently mounted fs from /etc/mtab.

    In mount, when using /etc/mtab to lookup a mount entry, get the most
    recently mounted entry instead of the first mounted entry.  You want
    to manipulate the most recent mount, not a covered mount.  See comment
    to umount_one_bw().

    This bug has been util-linux-ng since the first git checkin.  It
    finally showed up on my system with the change to stop using
    SETLOOP_AUTOCLEAR if /etc/mtab is writable (commit af092544).  If you
    do a remount of a file system mounted on the same dir as another file
    system, it will take the options from the first mount and write them
    out to /etc/mtab as the options to the second mount - including, in
    the case of a loop device, loop=/dev/loop0.  Then when you umount the
    second mount, it grabs the line from /etc/mtab and tries to tear down
    the loop device, which complains because it is still in use by the
    first mount.

    Reproducible test case (on a system with writable /etc/mtab):

    mount -o loop,ro /tmp/ro /mnt
    mount -t tmpfs tmpfs /mnt
    mount -o remount,ro /mnt
    cat /etc/mtab | tail -2

Signed-off-by: Valerie Aurora <vaurora@redhat.com>
mount/fstab.c
mount/fstab.h
mount/mount.c