summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorneilbrown <neilbrown>2002-09-02 02:31:12 +0000
committerneilbrown <neilbrown>2002-09-02 02:31:12 +0000
commit55ce21003ee0fb12fe5ef70909cdc8ce00b803e4 (patch)
tree75151711c32ae998dc51d80256d232cc5e12df75
parent9bea78d8f36cd5ab75d18e32224f0b90a635128c (diff)
downloadnfs-utils-55ce21003ee0fb12fe5ef70909cdc8ce00b803e4.tar.gz
nfs-utils-55ce21003ee0fb12fe5ef70909cdc8ce00b803e4.tar.xz
nfs-utils-55ce21003ee0fb12fe5ef70909cdc8ce00b803e4.zip
-N for statd
-rw-r--r--ChangeLog10
-rw-r--r--utils/statd/statd.c20
-rw-r--r--utils/statd/statd.h2
-rw-r--r--utils/statd/statd.man6
4 files changed, 30 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 363141c..856dba4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,16 @@
2002-09-02 Juan Gomez <juang@us.ibm.com>
NeilBrown <neilb@cse.unsw.edu.au>
+ Add -N option to statd to run in notify-only mode.
+
+ * utils/statd/statd.h: uncomment MODE_NOTIFY_ONLY
+ * utils/statd/statd.man: document -N
+ * utils/statd/statd.c: enabled -N, largely exists but needed to be
+ uncommented and completed
+
+2002-09-02 Juan Gomez <juang@us.ibm.com>
+ NeilBrown <neilb@cse.unsw.edu.au>
+
statd to have " -P directory" arg to use that directory instead
of /var/lib/nfs. This is useful for fail-over clusters.
diff --git a/utils/statd/statd.c b/utils/statd/statd.c
index 3a6ed61..b1e7304 100644
--- a/utils/statd/statd.c
+++ b/utils/statd/statd.c
@@ -55,6 +55,7 @@ static struct option longopts[] =
{ "port", 1, 0, 'p' },
{ "name", 1, 0, 'n' },
{ "state-directory-path", 1, 0, 'P' },
+ { "notify-mode", 0, 0, 'N' },
{ NULL, 0, 0, 0 }
};
@@ -112,11 +113,11 @@ static void log_modes(void)
strcat(buf,"No-Daemon ");
if (run_mode & MODE_LOG_STDERR)
strcat(buf,"Log-STDERR ");
- /* future: IP aliasing
+
if (run_mode & MODE_NOTIFY_ONLY)
{
strcat(buf,"Notify-Only ");
- } */
+ }
log(L_WARNING,buf);
/* future: IP aliasing
if (run_mode & MODE_NOTIFY_ONLY)
@@ -141,6 +142,7 @@ usage()
fprintf(stderr," -V, -v, --version Display version information and exit.\n");
fprintf(stderr," -n, --name Specify a local hostname.\n");
fprintf(stderr," -P State directory path.\n");
+ fprintf(stderr," -N Run in notify only mode.\n");
}
/*
@@ -174,7 +176,7 @@ int main (int argc, char **argv)
MY_NAME = NULL;
/* Process command line switches */
- while ((arg = getopt_long(argc, argv, "h?vVFdn:p:o:P:", longopts, NULL)) != EOF) {
+ while ((arg = getopt_long(argc, argv, "h?vVFNdn:p:o:P:", longopts, NULL)) != EOF) {
switch (arg) {
case 'V': /* Version */
case 'v':
@@ -183,6 +185,9 @@ int main (int argc, char **argv)
case 'F': /* Foreground/nodaemon mode */
run_mode |= MODE_NODAEMON;
break;
+ case 'N':
+ run_mode |= MODE_NOTIFY_ONLY;
+ break;
case 'd': /* No daemon only - log to stderr */
run_mode |= MODE_LOG_STDERR;
break;
@@ -308,18 +313,19 @@ int main (int argc, char **argv)
notify_hosts (); /* Send out notify requests */
++restart;
- /* future: IP aliasing
+ /* this registers both UDP and TCP services */
if (!(run_mode & MODE_NOTIFY_ONLY)) {
rpc_init("statd", SM_PROG, SM_VERS, sm_prog_1, port);
- } */
- /* this registers both UDP and TCP services */
- rpc_init("statd", SM_PROG, SM_VERS, sm_prog_1, port);
+ }
/*
* Handle incoming requests: SM_NOTIFY socket requests, as
* well as callbacks from lockd.
*/
my_svc_run(); /* I rolled my own, Olaf made it better... */
+
+ if ((run_mode & MODE_NOTIFY_ONLY))
+ break;
}
return 0;
}
diff --git a/utils/statd/statd.h b/utils/statd/statd.h
index 5e2b6fd..ef90bdd 100644
--- a/utils/statd/statd.h
+++ b/utils/statd/statd.h
@@ -73,7 +73,7 @@ stat_chge SM_stat_chge;
extern int run_mode;
#define MODE_NODAEMON 1 /* No-daemon/foreground mode. */
#define MODE_LOG_STDERR 2 /* in foreground mode, log to stderr */
-/*#define MODE_NOTIFY_ONLY 4*/ /* Send SM_NOTIFY to everyone monitored on
+#define MODE_NOTIFY_ONLY 4 /* Send SM_NOTIFY to everyone monitored on
a single interface/alias */
/* LH - notify_only mode would be for notifying hosts on an IP alias
* that just came back up, for ex, when failing over a HA service to
diff --git a/utils/statd/statd.man b/utils/statd/statd.man
index 2b10803..6a683ff 100644
--- a/utils/statd/statd.man
+++ b/utils/statd/statd.man
@@ -95,6 +95,12 @@ If this option is not specified the default of
.BR /var/lib/nfs
is used.
.TP
+.B -N
+Causes statd to run in the notify-only mode. When started in this mode, the
+statd program will check its state directory, send notifications to any
+monitored nodes, and exit once the notifications have been sent. This mode is
+used to enable Highly Available NFS implementations (i.e. HA-NFS).
+.TP
.B -?
Causes
.B rpc.statd