]> err.no Git - util-linux/commitdiff
umount: no checking mount point removal
authorSigned-off-by: Guan Xin <guanx.bac@gmail.com>
Mon, 29 Sep 2008 10:13:54 +0000 (12:13 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 29 Sep 2008 10:13:54 +0000 (12:13 +0200)
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>
mount/umount.c

index b571a300b7bedf81cc82157a4a143c762e1674ad..81f8bdf13601cc81024e8c5e27512636948d4bae 100644 (file)
@@ -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;
 }