aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/mountd
diff options
context:
space:
mode:
authorRick Macklem <rmacklem@FreeBSD.org>2012-10-15 00:17:16 +0000
committerRick Macklem <rmacklem@FreeBSD.org>2012-10-15 00:17:16 +0000
commitc548eb5cadf07fe8a268ff35cb7a03bcc56689d3 (patch)
tree7afb0418c60c7c14e0b9dd1f86c05adf0f564c6a /usr.sbin/mountd
parentcf0c92d600e382b5f1c947a61970e910736ac9d7 (diff)
Notes
Diffstat (limited to 'usr.sbin/mountd')
-rw-r--r--usr.sbin/mountd/mountd.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/usr.sbin/mountd/mountd.c b/usr.sbin/mountd/mountd.c
index b066fc748b5dd..543fc14f9cc3b 100644
--- a/usr.sbin/mountd/mountd.c
+++ b/usr.sbin/mountd/mountd.c
@@ -246,6 +246,7 @@ static int mallocd_svcport = 0;
static int *sock_fd;
static int sock_fdcnt;
static int sock_fdpos;
+static int suspend_nfsd = 0;
int opt_flags;
static int have_v6 = 1;
@@ -311,7 +312,7 @@ main(int argc, char **argv)
else
close(s);
- while ((c = getopt(argc, argv, "2deh:lnop:r")) != -1)
+ while ((c = getopt(argc, argv, "2deh:lnop:rS")) != -1)
switch (c) {
case '2':
force_v2 = 1;
@@ -363,6 +364,9 @@ main(int argc, char **argv)
out_of_mem();
}
break;
+ case 'S':
+ suspend_nfsd = 1;
+ break;
default:
usage();
};
@@ -921,7 +925,7 @@ usage(void)
{
fprintf(stderr,
"usage: mountd [-2] [-d] [-e] [-l] [-n] [-p <port>] [-r] "
- "[-h <bindip>] [export_file ...]\n");
+ "[-S] [-h <bindip>] [export_file ...]\n");
exit(1);
}
@@ -1659,6 +1663,8 @@ get_exportlist(void)
int done;
struct nfsex_args eargs;
+ if (suspend_nfsd != 0)
+ (void)nfssvc(NFSSVC_SUSPENDNFSD, NULL);
v4root_dirpath[0] = '\0';
bzero(&export, sizeof(export));
export.ex_flags = MNT_DELEXPORT;
@@ -1787,6 +1793,9 @@ get_exportlist(void)
*/
if (run_v4server > 0 && has_publicfh == 0)
(void) nfssvc(NFSSVC_NOPUBLICFH, NULL);
+
+ /* Resume the nfsd. If they weren't suspended, this is harmless. */
+ (void)nfssvc(NFSSVC_RESUMENFSD, NULL);
}
/*