summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSigned-off-by: Guan Xin2008-09-29 12:13:54 +0200
committerKarel Zak2008-09-29 12:13:54 +0200
commit1069973afa00944714f91c9b34d296a89e8403df (patch)
treed5bba9e65795bb216dd57665299c204167bbcfc9
parentmount: fix typo (diff)
downloadkernel-qcow2-util-linux-1069973afa00944714f91c9b34d296a89e8403df.tar.gz
kernel-qcow2-util-linux-1069973afa00944714f91c9b34d296a89e8403df.tar.xz
kernel-qcow2-util-linux-1069973afa00944714f91c9b34d296a89e8403df.zip
umount: no checking mount point removal
No longer checks if mount point has been renamed or removed. Linux reports EBUSY for these actions, so this check is redundant. [kzak@redhat.com: - remove the check rather than "#if 0" - remove unnecessary mnt_err2 stuff] Signed-off-by: Guan Xin <guanx.bac@gmail.com> Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--mount/umount.c29
1 files changed, 4 insertions, 25 deletions
diff --git a/mount/umount.c b/mount/umount.c
index b571a300b..81f8bdf13 100644
--- a/mount/umount.c
+++ b/mount/umount.c
@@ -185,7 +185,7 @@ static void complain(int err, const char *dev) {
static int
umount_one (const char *spec, const char *node, const char *type,
const char *opts, struct mntentchn *mc) {
- int umnt_err, umnt_err2;
+ int umnt_err = 0;
int isroot;
int res;
int status;
@@ -217,7 +217,6 @@ umount_one (const char *spec, const char *node, const char *type,
if (delloop && is_loop_device(spec) && !is_loop_autoclear(spec))
myloop = 1;
- umnt_err = umnt_err2 = 0;
if (lazy) {
res = umount2 (node, MNT_DETACH);
if (res < 0)
@@ -240,27 +239,10 @@ umount_one (const char *spec, const char *node, const char *type,
} else
res = umount (node);
- if (res < 0) {
+ if (res < 0)
umnt_err = errno;
- /* A device might have been mounted on a node that has since
- been deleted or renamed, so if node fails, also try spec. */
- /* Note that this is incorrect in case spec was mounted
- several times. */
- /* if (umnt_err == ENOENT || umnt_err == EINVAL) */
- if (umnt_err != EBUSY && strcmp(node, spec)) {
- if (verbose)
- printf (_("could not umount %s - trying %s instead\n"),
- node, spec);
- res = umount (spec);
- if (res < 0)
- umnt_err2 = errno;
- /* Do not complain about remote NFS mount points */
- if (errno == ENOENT && index(spec, ':'))
- umnt_err2 = 0;
- }
- }
- if (res < 0 && remount && (umnt_err == EBUSY || umnt_err2 == EBUSY)) {
+ if (res < 0 && remount && umnt_err == EBUSY) {
/* Umount failed - let us try a remount */
res = mount(spec, node, NULL,
MS_MGC_VAL | MS_REMOUNT | MS_RDONLY, NULL);
@@ -333,10 +315,7 @@ umount_one (const char *spec, const char *node, const char *type,
if (res >= 0)
return 0;
-
- if (umnt_err2)
- complain(umnt_err2, spec);
- if (umnt_err && umnt_err != umnt_err2)
+ if (umnt_err)
complain(umnt_err, node);
return 1;
}