summaryrefslogtreecommitdiffstats
path: root/usr.sbin/mountd/mountd.c
diff options
context:
space:
mode:
authorjoerg <joerg@FreeBSD.org>2002-07-18 20:52:17 +0000
committerjoerg <joerg@FreeBSD.org>2002-07-18 20:52:17 +0000
commit63afba9f66e6db9c328d43e463254994b758bf41 (patch)
tree6194f27b4b092874f62873ebbd9d5a0f1f0e6eb5 /usr.sbin/mountd/mountd.c
parent66e9d99f6c46c9edc7c7f30ae1a88510c54c0ce5 (diff)
downloadFreeBSD-src-63afba9f66e6db9c328d43e463254994b758bf41.zip
FreeBSD-src-63afba9f66e6db9c328d43e463254994b758bf41.tar.gz
Try to give a more descriptive error message for the pilot error of
attempting to export the non-root of a filesystem with -alldirs. This pilot error seems to be very common, and the "could not remount" error message doesn't give much hints about the real reason. See the old PR below for an example. While i was at it, make it possible to entirely omit the often annoying error message in that case by specifying the "quiet" exports flag. This allows to specify something like /cdrom -alldirs,ro,quiet <where to export to> which will silently fail if nothing is mounted under /cdrom, but do the rigth thing as soon as you mount something. While doing this, i've put the embedded example in the exports(5) man page into a subsection of its own as it ought to be. Thanks for Paul Southworth for reminding me about this problem. PR: bin/4448 MFC after: 1 month
Diffstat (limited to 'usr.sbin/mountd/mountd.c')
-rw-r--r--usr.sbin/mountd/mountd.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/usr.sbin/mountd/mountd.c b/usr.sbin/mountd/mountd.c
index 3d0df88..2798915 100644
--- a/usr.sbin/mountd/mountd.c
+++ b/usr.sbin/mountd/mountd.c
@@ -243,6 +243,7 @@ int mountdlockfd;
#define OP_NET 0x10
#define OP_ALLDIRS 0x40
#define OP_HAVEMASK 0x80 /* A mask was specified or inferred. */
+#define OP_QUIET 0x100
#define OP_MASKLEN 0x200
#ifdef DEBUG
@@ -1240,7 +1241,8 @@ getexp_err(ep, grp)
{
struct grouplist *tgrp;
- syslog(LOG_ERR, "bad exports list line %s", line);
+ if (!(opt_flags & OP_QUIET))
+ syslog(LOG_ERR, "bad exports list line %s", line);
if (ep && (ep->ex_flag & EX_LINKED) == 0)
free_exp(ep);
while (grp) {
@@ -1580,6 +1582,8 @@ do_opt(cpp, endcpp, ep, grp, has_hostp, exflagsp, cr)
opt_flags |= OP_MAPALL;
} else if (cpoptarg && !strcmp(cpopt, "index")) {
ep->ex_indexfile = strdup(cpoptarg);
+ } else if (!strcmp(cpopt, "quiet")) {
+ opt_flags |= OP_QUIET;
} else {
syslog(LOG_ERR, "bad opt %s", cpopt);
return (1);
@@ -1812,6 +1816,8 @@ do_mount(ep, grp, exflags, anoncrp, dirp, dirplen, fsb)
*cp-- = savedc;
else
cp = dirp + dirplen - 1;
+ if (opt_flags & OP_QUIET)
+ return (1);
if (errno == EPERM) {
if (debug)
warnx("can't change attributes for %s",
@@ -1821,8 +1827,14 @@ do_mount(ep, grp, exflags, anoncrp, dirp, dirplen, fsb)
return (1);
}
if (opt_flags & OP_ALLDIRS) {
- syslog(LOG_ERR, "could not remount %s: %m",
- dirp);
+ if (errno == EINVAL)
+ syslog(LOG_ERR,
+ "-alldirs requested but %s is not a filesystem mountpoint",
+ dirp);
+ else
+ syslog(LOG_ERR,
+ "could not remount %s: %m",
+ dirp);
return (1);
}
/* back up over the last component */
OpenPOWER on IntegriCloud