summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--utils/mountd/mountd.c35
-rw-r--r--utils/mountd/mountd.man8
3 files changed, 45 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 5351d54..0cf5dc6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2001-06-05 H.J. Lu <hjl@lucon.org>
+
+ * utils/mountd/mountd.c (longopts): Add "foreground/d".
+ (main): Support --foreground/-d to set the limit of the number
+ of open file descriptors.
+ (usage): Updated.
+
+ * utils/mountd/mountd.man: Updated for --foreground/-d.
+
2001-06-04 H.J. Lu <hjl@lucon.org>
* nfs-utils.spec (Release): Set to 6.
diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
index 14f5fa2..b577971 100644
--- a/utils/mountd/mountd.c
+++ b/utils/mountd/mountd.c
@@ -18,6 +18,7 @@
#include <getopt.h>
#include <errno.h>
#include <fcntl.h>
+#include <sys/resource.h>
#include "xmalloc.h"
#include "misc.h"
#include "mountd.h"
@@ -30,6 +31,7 @@ static struct nfs_fh_len *get_rootfh(struct svc_req *, dirpath *, int *, int v3)
static struct option longopts[] =
{
{ "foreground", 0, 0, 'F' },
+ { "descriptors", 0, 0, 'o' },
{ "debug", 1, 0, 'd' },
{ "help", 0, 0, 'h' },
{ "exports-file", 1, 0, 'f' },
@@ -390,13 +392,23 @@ main(int argc, char **argv)
char *export_file = _PATH_EXPORTS;
int foreground = 0;
int port = 0;
+ int descriptors = 256;
int c;
struct sigaction sa;
+ struct rlimit rlim;
/* Parse the command line options and arguments. */
opterr = 0;
- while ((c = getopt_long(argc, argv, "Fd:f:p:P:hN:V:v", longopts, NULL)) != EOF)
+ while ((c = getopt_long(argc, argv, "o:Fd:f:p:P:hN:V:v", longopts, NULL)) != EOF)
switch (c) {
+ case 'o':
+ descriptors = atoi(optarg);
+ if (descriptors <= 0) {
+ fprintf(stderr, "%s: bad descriptors: %s\n",
+ argv [0], optarg);
+ usage(argv [0], 1);
+ }
+ break;
case 'F':
foreground = 1;
break;
@@ -447,6 +459,19 @@ main(int argc, char **argv)
exit(1);
}
+ if (getrlimit (RLIMIT_NOFILE, &rlim) != 0) {
+ fprintf(stderr, "%s: getrlimit (RLIMIT_NOFILE) failed: %s\n",
+ argv [0], strerror(errno));
+ exit(1);
+ }
+
+ rlim.rlim_cur = descriptors;
+ if (setrlimit (RLIMIT_NOFILE, &rlim) != 0) {
+ fprintf(stderr, "%s: setrlimit (RLIMIT_NOFILE) failed: %s\n",
+ argv [0], strerror(errno));
+ exit(1);
+ }
+
/* Initialize logging. */
/* xlog_open("mountd"); */
@@ -507,9 +532,9 @@ static void
usage(const char *prog, int n)
{
fprintf(stderr,
-"Usage: %s [-Fhnv] [-d kind] [-f exports-file] [-V version]\n"
-" [-N version] [--debug kind] [-p|--port port] [--help] [--version]\n"
-" [--exports-file=file] [--nfs-version version]\n"
-" [--no-nfs-version version] [--no-tcp]\n", prog);
+"Usage: %s [-F|--foreground] [-h|--help] [-v|--version] [-d kind|--debug kind]\n"
+" [-o num|--descriptors num] [-f exports-file|--exports-file=file]\n"
+" [-p|--port port] [-V version|--nfs-version version]\n"
+" [-N version|--no-nfs-version version] [-n|--no-tcp]\n", prog);
exit(n);
}
diff --git a/utils/mountd/mountd.man b/utils/mountd/mountd.man
index c38d5e2..1a7e005 100644
--- a/utils/mountd/mountd.man
+++ b/utils/mountd/mountd.man
@@ -55,8 +55,8 @@ a stale entry will remain in
.BR rmtab .
.SH OPTIONS
.TP
-.B \-d " or " \-\-debug
-Turn on debugging.
+.B \-d kind " or " \-\-debug kind
+Turn on debugging for kind.
.TP
.B \-F " or " \-\-foreground
Run in foreground (do not daemonize)
@@ -72,6 +72,10 @@ By default, export information is read from
.B \-h " or " \-\-help
Display usage message.
.TP
+.B \-o num " or " \-\-descriptors num
+Set the limit of the number of open file descriptors to num. The
+default is 256.
+.TP
.B \-N " or " \-\-no-nfs-version
This option can be used to request that
.B rpc.mountd