From 2d0657640a6dfada42179213e842952710bb5ba4 Mon Sep 17 00:00:00 2001 From: Steve Dickson Date: Wed, 9 May 2007 18:23:26 +0000 Subject: [PATCH] Fix mount.nfs4 to display correct error message (bz 227212) --- nfs-utils-1.0.12-mount-v4-errors.patch | 86 ++++++++++++++++++++++++++ nfs-utils.spec | 7 ++- 2 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 nfs-utils-1.0.12-mount-v4-errors.patch diff --git a/nfs-utils-1.0.12-mount-v4-errors.patch b/nfs-utils-1.0.12-mount-v4-errors.patch new file mode 100644 index 0000000..fec0981 --- /dev/null +++ b/nfs-utils-1.0.12-mount-v4-errors.patch @@ -0,0 +1,86 @@ +commit 99defadcebf3bf892871f5541bfe762685faccbd +Author: Steve Dickson +Date: Wed May 9 13:14:26 2007 -0400 + + When nfs4 mount fail because the exported directory does + not exist, the mount command claims the local mount point + does not exist which is wrong. This patch fixes that problem + as well as makes the v4 mount failures look like v3/v2 failures. + + Signed-off-by: Steve Dickson + +--- nfs-utils-1.0.12/utils/mount/mount.c.orig 2007-05-09 14:06:23.574929000 -0400 ++++ nfs-utils-1.0.12/utils/mount/mount.c 2007-05-09 14:07:34.368247000 -0400 +@@ -348,22 +348,49 @@ + return 0; + } + +-static void mount_error(char *node) ++static void mount_error(char *mntpnt, char *node) + { + switch(errno) { + case ENOTDIR: +- fprintf(stderr, "%s: mount point %s is not a directory\n", progname, node); ++ fprintf(stderr, "%s: mount point %s is not a directory\n", ++ progname, mntpnt); + break; + case EBUSY: +- fprintf(stderr, "%s: %s is already mounted or busy\n", progname, node); ++ fprintf(stderr, "%s: %s is already mounted or busy\n", ++ progname, mntpnt); + break; + case ENOENT: +- fprintf(stderr, "%s: mount point %s does not exist\n", progname, node); ++ if (node) { ++ fprintf(stderr, "%s: %s failed, reason given by server: %s\n", ++ progname, node, strerror(errno)); ++ } else ++ fprintf(stderr, "%s: mount point %s does not exist\n", ++ progname, mntpnt); + break; + default: + fprintf(stderr, "%s: %s\n", progname, strerror(errno)); + } + } ++static int chk_mountpoint(mount_point) ++{ ++ struct stat sb; ++ ++ if (stat(mount_point, &sb) < 0){ ++ mount_error(mount_point, NULL); ++ return 1; ++ } ++ if (S_ISDIR(sb.st_mode) == 0){ ++ errno = ENOTDIR; ++ mount_error(mount_point, NULL); ++ return 1; ++ } ++ if (access(mount_point, X_OK) < 0) { ++ mount_error(mount_point, NULL); ++ return 1; ++ } ++ ++ return 0; ++} + #define NFS_MOUNT_VERS_DEFAULT 3 + + int main(int argc, char *argv[]) +@@ -493,6 +520,9 @@ + } + } + ++ if (chk_mountpoint(mount_point)) ++ exit(EX_FAIL); ++ + if (nfs_mount_vers == 4) { + mnt_err = nfs4mount(spec, mount_point, &flags, + &extra_opts, &mount_opts, 0); +@@ -512,7 +542,7 @@ + flags, mount_opts); + + if (mnt_err) { +- mount_error(mount_point); ++ mount_error(mount_point, spec); + exit(EX_FAIL); + } + } diff --git a/nfs-utils.spec b/nfs-utils.spec index 7dc4954..3841689 100644 --- a/nfs-utils.spec +++ b/nfs-utils.spec @@ -2,7 +2,7 @@ Summary: NFS utilities and supporting clients and daemons for the kernel NFS ser Name: nfs-utils URL: http://sourceforge.net/projects/nfs Version: 1.0.12 -Release: 4%{?dist} +Release: 5%{?dist} Epoch: 1 # group all 32bit related archs @@ -46,6 +46,7 @@ Patch78: nfs-utils-1.0.10-udp-no-connect.patch Patch79: nfs-utils-1.0.10-v4-umounts.patch Patch80: nfs-utils-1.0.9-mount-quotes.patch Patch81: nfs-utils-1.0.10-mount-fake.patch +Patch82: nfs-utils-1.0.12-mount-v4-errors.patch %if %{enablefscache} Patch90: nfs-utils-1.0.9-mount-fsc.patch @@ -117,6 +118,7 @@ This package also contains the mount.nfs and umount.nfs program. %patch79 -p1 %patch80 -p1 %patch81 -p1 +%patch82 -p1 %if %{enablefscache} %patch90 -p1 %endif @@ -292,6 +294,9 @@ fi %endif %changelog +* Wed May 9 2007 Steve Dickson 1.0.10-18 +- Fix mount.nfs4 to display correct error message (bz 227212) + * Tue Apr 3 2007 Steve Dickson 1.0.12-4 - Replace portmap dependency with an rpcbind dependency (bz 228894)