On Wed, 01 Aug 2012 11:22:04 -0400 Steve Dickson <SteveD@xxxxxxxxxx> wrote: > > > On 07/31/2012 02:37 PM, Karel Zak wrote: > > On Tue, Jul 31, 2012 at 01:04:58PM -0400, Steve Dickson wrote: > >>> BTW Steve, Karel's "[PATCH] umount.nfs: ignore non-nfs filesystems" > >>> which appears in email: > >>> > >>> From: Karel Zak <kzak@xxxxxxxxxx> > >>> To: NeilBrown <neilb@xxxxxxx> > >>> Cc: Steve Dickson <SteveD@xxxxxxxxxx>, NFS <linux-nfs@xxxxxxxxxxxxxxx> > >>> 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. > >> I beg to differ.... > >> > >> commit 76908c3f14a12e865054ea5d6e4cad201c28839a > >> Author: NeilBrown <neilb@xxxxxxx> > >> Date: Mon Jul 16 08:43:28 2012 -0400 > >> > >> mount.nfs: restore correct error status when umount fails > >> > >> Or am I missing something? > > > > Yes, Neil found two problems: > > > > http://www.spinics.net/lists/linux-nfs/msg31466.html > Ah... Found it and committed it... > > steved. Thanks. So here is one more :-) This fixes the the bug in $SUBJECT NeilBrown From: Neil Brown <neilb@xxxxxxx> Date: Thu, 2 Aug 2012 10:20:13 +1000 Subject: [PATCH] umount: use correct return value for is_vers4. is_vers4 in mount_libmount.c is based on nfs_umount_is_vers4 in nfsumount.c, except the return values are reversed. The result of this is: - a MOUNT_UMNT call is not sent when an NFSv3 or NFSv2 filesystem is unmounted - a MOUNT_UMNT call *is* sent when and 'nfs4' filesystem is unmounted (but not when an 'nfs -o vers=4 filesystem is unmounted, as that is checked elsewhere). Signed-off-by: NeilBrown <neilb@xxxxxxx> diff --git a/utils/mount/mount_libmount.c b/utils/mount/mount_libmount.c index ddf61b2..701d41e 100644 --- a/utils/mount/mount_libmount.c +++ b/utils/mount/mount_libmount.c @@ -140,14 +140,14 @@ static int try_mount(struct libmnt_context *cxt, int bg) return ret; } -/* returns: error = -1, success = 0 , unknown = 1 */ +/* returns: error = -1, success = 1 , not vers4 == 0 */ static int is_vers4(struct libmnt_context *cxt) { struct libmnt_fs *fs = mnt_context_get_fs(cxt); struct libmnt_table *tb = NULL; const char *src = mnt_context_get_source(cxt), *tgt = mnt_context_get_target(cxt); - int rc = 1; + int rc = 0; if (!src || !tgt) return -1; @@ -163,7 +163,7 @@ static int is_vers4(struct libmnt_context *cxt) if (fs) { const char *type = mnt_fs_get_fstype(fs); if (type && strcmp(type, "nfs4") == 0) - rc = 0; + rc = 1; } mnt_free_table(tb); return rc;
Attachment:
signature.asc
Description: PGP signature