From: Karel Zak <kzak@redhat.com>
To: NeilBrown <neilb@suse.de>
Cc: Steve Dickson <SteveD@redhat.com>, NFS <linux-nfs@vger.kernel.org>
Subject: Re: nfs-utils: Something is wrong in is_vers4()
Date: Tue, 31 Jul 2012 11:58:53 +0200 [thread overview]
Message-ID: <20120731095853.GA17896@x2.net.home> (raw)
In-Reply-To: <20120731165842.08017d60@notabene.brown>
On Tue, Jul 31, 2012 at 04:58:42PM +1000, NeilBrown wrote:
>
> in nfs-utils, in utils/mount/mount_libmount.c there is a function
>
> is_vers4()
>
> which
> /* returns: error = -1, success = 0 , unknown = 1 */
>
> which seems odd to me... I would have chosen '1' for success (it is vers 4),
> 0 for failure (not vers 4), and maybe -1 for error (something went wrong).
>
> This is used as follows:
> switch (is_vers4(cxt)) {
> case 0:
> /* We ignore the error from nfs_umount23.
> * If the actual umount succeeds (in del_mtab),
> * we don't want to signal an error, as that
> * could cause /sbin/mount to retry!
> */
> nfs_umount23(mnt_context_get_source(cxt), opts);
> break;
> case 1: /* unknown */
> break;
> default: /* error */
> goto err;
> }
The same code you can found in original non-libmount version
in nfsumount.c *but* with correct nfs_umount_is_vers4() return codes.
>
> so in the '0' (success, it is vers4) case we do nfs_umount23. Odd.
> In the '1' (unknown, so presumably vers2 or 3) we don't. Ever. Very odd.
You're right, should be (copy & past from nfsumount.c):
* Returns 1 if "mc" is an NFSv4 mount, zero if not, and
* -1 if some error occurred.
...probably my bug. Sorry.
> So we don't currently send MOUNT_UMNT requests for v2 or v3.
> We don't for v4 either because nfs_umount_do_umnt contains:
>
> /* Skip UMNT call for vers=4 mounts */
> if (nfs_pmap.pm_vers == 4)
> return EX_SUCCESS;
>
> so maybe is_vers4 isn't needed?
>
> Looks like something needs to be fixed here but I'm not entirely sure what.
> Karel??
The is_vers4() should be fixed to be compatible with the original code.
> BTW Steve, Karel's "[PATCH] umount.nfs: ignore non-nfs filesystems"
> which appears in email:
>
> From: Karel Zak <kzak@redhat.com>
> To: NeilBrown <neilb@suse.de>
> Cc: Steve Dickson <SteveD@redhat.com>, NFS <linux-nfs@vger.kernel.org>
> Subject: Re: [PATCH] umount.nfs: restore correct error status when umount fails.
> Date: Thu, 12 Jul 2012 18:44:20 +0200
>
> hasn't been applied, but probably should be.
Yes.
Karel
--
Karel Zak <kzak@redhat.com>
http://karelzak.blogspot.com
next prev parent reply other threads:[~2012-07-31 9:58 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-31 6:58 nfs-utils: Something is wrong in is_vers4() NeilBrown
2012-07-31 9:58 ` Karel Zak [this message]
2012-07-31 17:04 ` Steve Dickson
2012-07-31 18:37 ` Karel Zak
2012-08-01 15:22 ` Steve Dickson
2012-08-02 0:21 ` NeilBrown
2012-08-06 14:21 ` Steve Dickson
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=20120731095853.GA17896@x2.net.home \
--to=kzak@redhat.com \
--cc=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).