summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--utils/mountd/mountd.c17
-rw-r--r--utils/mountd/mountd.man6
3 files changed, 24 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index ebe9ae7..c540115 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -16,7 +16,11 @@
Document the 'sync' option in the exports(5) man page -- ATM
only the 'async' option is documented, which is not very
symmetric. :-) "Steinar H. Gunderson" <sesse@debian.org>
-
+ - mountd state directory:
+ Let the user select (via a new parameter) the path to the NFS
+ state directory for mountd, to match the statd functionality.
+ "Steinar H. Gunderson" <sesse@debian.org>
+
2006-04-12 NeilBrown <neilb@suse.de>
Remove **/Makefile.in, aclocal.m4, configure, and
support/include/config.h.in from source control
diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
index 9cf2a1f..43606dd 100644
--- a/utils/mountd/mountd.c
+++ b/utils/mountd/mountd.c
@@ -56,6 +56,7 @@ static struct option longopts[] =
{ "port", 1, 0, 'p' },
{ "no-tcp", 0, 0, 'n' },
{ "ha-callout", 1, 0, 'H' },
+ { "state-directory-path", 1, 0, 's' },
{ NULL, 0, 0, 0 }
};
@@ -457,6 +458,7 @@ int
main(int argc, char **argv)
{
char *export_file = _PATH_EXPORTS;
+ char *state_dir = NFS_STATEDIR;
int foreground = 0;
int port = 0;
int descriptors = 0;
@@ -466,7 +468,7 @@ main(int argc, char **argv)
/* Parse the command line options and arguments. */
opterr = 0;
- while ((c = getopt_long(argc, argv, "o:n:Fd:f:p:P:hH:N:V:v", longopts, NULL)) != EOF)
+ while ((c = getopt_long(argc, argv, "o:n:Fd:f:p:P:hH:N:V:vs:", longopts, NULL)) != EOF)
switch (c) {
case 'o':
descriptors = atoi(optarg);
@@ -506,6 +508,13 @@ main(int argc, char **argv)
case 'n':
_rpcfdtype = SOCK_DGRAM;
break;
+ case 's':
+ if ((state_dir = xstrdup(optarg)) == NULL) {
+ fprintf(stderr, "%s: xstrdup(%s) failed!\n",
+ argv[0], optarg);
+ exit(1);
+ }
+ break;
case 'V':
nfs_version |= 1 << (atoi (optarg) - 1);
break;
@@ -523,9 +532,9 @@ main(int argc, char **argv)
if (optind != argc || !(nfs_version & 0x7))
usage(argv [0], 1);
- if (chdir(NFS_STATEDIR)) {
+ if (chdir(state_dir)) {
fprintf(stderr, "%s: chdir(%s) failed: %s\n",
- argv [0], NFS_STATEDIR, strerror(errno));
+ argv [0], state_dir, strerror(errno));
exit(1);
}
@@ -620,6 +629,6 @@ usage(const char *prog, int 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"
-" [-H ha-callout-prog]\n", prog);
+" [-H ha-callout-prog] [-s|--state-directory-path path]\n", prog);
exit(n);
}
diff --git a/utils/mountd/mountd.man b/utils/mountd/mountd.man
index 64e508a..bac4421 100644
--- a/utils/mountd/mountd.man
+++ b/utils/mountd/mountd.man
@@ -119,6 +119,12 @@ The third will be the path that the client is mounting.
The last is the number of concurrent mounts that we believe the client
has of that path.
.TP
+.BI "\-P," "" " \-\-state\-directory\-path " directory
+specify a directory in which to place statd state information.
+If this option is not specified the default of
+.BR /var/lib/nfs
+is used.
+.TP
.B \-V " or " \-\-nfs-version
This option can be used to request that
.B rpc.mountd