]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
mount: fix --all and nofail return code
authorKarel Zak <kzak@redhat.com>
Mon, 7 Apr 2014 09:53:05 +0000 (11:53 +0200)
committerKarel Zak <kzak@redhat.com>
Mon, 7 Apr 2014 09:53:05 +0000 (11:53 +0200)
Now the "nofail" affects warnings warning messages only. That's wrong
and regression (against original non-libmount version). The nofail has
to control return code too.

Reported-by: Patrick McLean <chutzpah@gentoo.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/mount.c

index d2d1fdac8cd2368d6a38521887daf32c3c1f54da..4c5f0e528f3a04d3b0ccf52e4d7719dfa53139d1 100644 (file)
@@ -197,12 +197,14 @@ static int mount_all(struct libmnt_context *cxt)
                        if (mnt_context_is_verbose(cxt))
                                printf("%-25s: mount successfully forked\n", tgt);
                } else {
-                       mk_exit_code(cxt, mntrc);       /* to print warnings */
-
-                       if (mnt_context_get_status(cxt)) {
+                       if (mk_exit_code(cxt, mntrc) == MOUNT_EX_SUCCESS) {
                                nsucc++;
 
-                               if (mnt_context_is_verbose(cxt))
+                               /* Note that MOUNT_EX_SUCCESS return code does
+                                * not mean that FS has been really mounted
+                                * (e.g. nofail option) */
+                               if (mnt_context_get_status(cxt) 
+                                   && mnt_context_is_verbose(cxt))
                                        printf("%-25s: successfully mounted\n", tgt);
                        } else
                                nerrs++;