From: Steve Dickson <SteveD@redhat.com>
To: NeilBrown <neilb@suse.de>
Cc: NFS <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH] umount.nfs: restore correct error status when umount fails.
Date: Mon, 16 Jul 2012 08:57:31 -0400 [thread overview]
Message-ID: <50040FBB.8010006@RedHat.com> (raw)
In-Reply-To: <20120712132757.7f86b86b@notabene.brown>
On 07/11/2012 11:27 PM, NeilBrown wrote:
>
>
> If nfs-utils is built without --enable-libmount-mount, then
> an unmount that failed due to the filesystem being busy will
> exit with '16' - EX_FILEIO.
> Autofs apparently relies on this.
>
> When built with --enable-libmount-mount, the same case will
> exit with '32' - EX_FAIL. Normally this is reserved for
> internal errors.
>
> This patch restores the use of EX_FILEIO for errors from umount.
>
> Signed-off-by: NeilBrown <neilb@suse.de>
Committed....
steved.
> --
>
> I confess that I haven't done a complete case analysis to see that we are
> always using the correct error code, but this looks OK and handles the case
> I care about.
>
> There is a case that I know it doesn't handle. If you ask umount.nfs to
> unmount a filesystem that is not nfs or nfs4, then the old code will
> refuse
> umount.nfs: /dev/sda7 on /mnt2 is not an NFS filesystem
>
> and exit with status '1'.
> The new libmount code will just think that it couldn't find anything in
> fstab and will try to do an nfs23 unmount. This is clearly different behaviour,
> I'm not sure that anyone would care though.
>
> NeilBrown
>
>
> diff --git a/utils/mount/mount_libmount.c b/utils/mount/mount_libmount.c
> index e8f17a9..5c1116a 100644
> --- a/utils/mount/mount_libmount.c
> +++ b/utils/mount/mount_libmount.c
> @@ -173,6 +173,7 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv)
> {
> int rc, c;
> char *spec = NULL, *opts = NULL;
> + int ret = EX_FAIL;
>
> static const struct option longopts[] = {
> { "force", 0, 0, 'f' },
> @@ -243,7 +244,7 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv)
> /* strange, no entry in mtab or /proc not mounted */
> nfs_umount23(spec, "tcp,v3");
> }
> -
> + ret = EX_FILEIO;
> rc = mnt_context_do_umount(cxt); /* call umount(2) syscall */
> mnt_context_finalize_mount(cxt); /* mtab update */
>
> @@ -252,12 +253,10 @@ static int umount_main(struct libmnt_context *cxt, int argc, char **argv)
> umount_error(rc, spec);
> goto err;
> }
> -
> - free(opts);
> - return EX_SUCCESS;
> + ret = EX_SUCCESS;
> err:
> free(opts);
> - return EX_FAIL;
> + return ret;
> }
>
> static int mount_main(struct libmnt_context *cxt, int argc, char **argv)
prev parent reply other threads:[~2012-07-16 12:57 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-12 3:27 [PATCH] umount.nfs: restore correct error status when umount fails NeilBrown
2012-07-12 16:44 ` Karel Zak
2012-07-12 20:16 ` NeilBrown
2012-07-16 12:57 ` Steve Dickson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50040FBB.8010006@RedHat.com \
--to=steved@redhat.com \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.