svn commit: r356101 - head/sbin/mount_nfs
Rick Macklem
rmacklem at FreeBSD.org
Thu Dec 26 22:33:20 UTC 2019
Author: rmacklem
Date: Thu Dec 26 22:33:20 2019
New Revision: 356101
URL: https://svnweb.freebsd.org/changeset/base/356101
Log:
Fix mount_nfs to recognize the NFSv4 specific errors returned by nmount(2).
When mount_nfs calls nmount(2), certain NFSv4 specific errors such as
NFSERR_MINORVERMISMATCH can be returned.
Without this patch, 10021 is reported as an unknown error.
This is not particulcarily serious, but make it difficult for sysadmins
to figure out why the mount attempt is failing.
This patch uses nfsv4_errstr.h to convert 10021 and similar to error strings
that can be printed out.
A positive side effect of this patch is the removal of a reference to
sys/nfsclient/nfs.h, which should no longer be used, since it is
part of the old NFS client.
This patch should only affect reporting of failed mount attempts and not the
semantics of NFS mount attempts.
Modified:
head/sbin/mount_nfs/mount_nfs.c
Modified: head/sbin/mount_nfs/mount_nfs.c
==============================================================================
--- head/sbin/mount_nfs/mount_nfs.c Thu Dec 26 21:20:45 2019 (r356100)
+++ head/sbin/mount_nfs/mount_nfs.c Thu Dec 26 22:33:20 2019 (r356101)
@@ -61,7 +61,8 @@ __FBSDID("$FreeBSD$");
#include <rpcsvc/nfs_prot.h>
#include <rpcsvc/mount.h>
-#include <nfsclient/nfs.h>
+#include <fs/nfs/nfsproto.h>
+#include <fs/nfs/nfsv4_errstr.h>
#include <arpa/inet.h>
@@ -155,7 +156,7 @@ main(int argc, char *argv[])
char *mntname, *p, *spec, *tmp;
char mntpath[MAXPATHLEN], errmsg[255];
char hostname[MAXHOSTNAMELEN + 1], gssn[MAXHOSTNAMELEN + 50];
- const char *gssname;
+ const char *gssname, *nmount_errstr;
iov = NULL;
iovlen = 0;
@@ -462,9 +463,14 @@ main(int argc, char *argv[])
build_iovec(&iov, &iovlen, "fspath", mntpath, (size_t)-1);
build_iovec(&iov, &iovlen, "errmsg", errmsg, sizeof(errmsg));
- if (nmount(iov, iovlen, 0))
- err(1, "nmount: %s%s%s", mntpath, errmsg[0] ? ", " : "",
- errmsg);
+ if (nmount(iov, iovlen, 0)) {
+ nmount_errstr = nfsv4_geterrstr(errno);
+ if (mountmode == V4 && nmount_errstr != NULL)
+ errx(1, "nmount: %s, %s", mntpath, nmount_errstr);
+ else
+ err(1, "nmount: %s%s%s", mntpath, errmsg[0] ? ", " : "",
+ errmsg);
+ }
exit(0);
}
More information about the svn-src-all
mailing list