From d28a12e2d805bea49d6598569df06032afac0a1eb10c9023b2bff301d8aa9360 Mon Sep 17 00:00:00 2001 From: Neil Brown Date: Thu, 19 Jul 2012 06:27:51 +0000 Subject: [PATCH] - mount-exit-code.fix: Correct exit code from unmount when fs is busy - allows autofs to work correctly. (bnc#770962) OBS-URL: https://build.opensuse.org/package/show/Base:System/nfs-utils?expand=0&rev=75 --- mount-exit-code.fix | 58 +++++++++++++++++++++++++++++++++++++++++++++ nfs-utils.changes | 7 ++++++ nfs-utils.spec | 2 ++ 3 files changed, 67 insertions(+) create mode 100644 mount-exit-code.fix diff --git a/mount-exit-code.fix b/mount-exit-code.fix new file mode 100644 index 0000000..12dd289 --- /dev/null +++ b/mount-exit-code.fix @@ -0,0 +1,58 @@ +From 76908c3f14a12e865054ea5d6e4cad201c28839a Mon Sep 17 00:00:00 2001 +From: NeilBrown +Date: Mon, 16 Jul 2012 08:43:28 -0400 +Subject: [PATCH] mount.nfs: restore correct error status when umount fails + +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. + +Reviewed-by: Karel Zak +Signed-off-by: NeilBrown +Signed-off-by: Steve Dickson + +--- + utils/mount/mount_libmount.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +--- nfs-utils-1.2.6.orig/utils/mount/mount_libmount.c ++++ nfs-utils-1.2.6/utils/mount/mount_libmount.c +@@ -173,6 +173,7 @@ static int umount_main(struct libmnt_con + { + 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_con + /* 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_con + 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) diff --git a/nfs-utils.changes b/nfs-utils.changes index 380fec2..c773b96 100644 --- a/nfs-utils.changes +++ b/nfs-utils.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Jul 19 06:26:10 UTC 2012 - nfbrown@suse.com + +- mount-exit-code.fix: Correct exit code from + unmount when fs is busy - allows autofs to work + correctly. (bnc#770962) + ------------------------------------------------------------------- Thu May 17 07:04:58 UTC 2012 - nfbrown@suse.com diff --git a/nfs-utils.spec b/nfs-utils.spec index 9bb5879..0b323ae 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -59,6 +59,7 @@ Source13: nfs-utils.rpmlintrc Patch0: nfs-utils-1.0.7-bind-syntax.patch Patch1: remove_pretty_sig.patch Patch2: mkdir-sbin +Patch3: mount-exit-code.fix Suggests: python-base %description @@ -137,6 +138,7 @@ Authors: %patch0 -p1 %patch1 -p1 %patch2 -p1 +%patch3 -p1 cp %{S:6} . %build