diff -up nfs-utils-1.3.0/nfs.conf.orig nfs-utils-1.3.0/nfs.conf --- nfs-utils-1.3.0/nfs.conf.orig 2019-03-15 11:06:31.295217191 -0400 +++ nfs-utils-1.3.0/nfs.conf 2019-03-15 11:07:37.178172631 -0400 @@ -63,6 +63,7 @@ # name= # state-directory-path=/var/lib/nfs/statd # ha-callout= +# no-notify=0 # #[sm-notify] # debug=0 diff -up nfs-utils-1.3.0/utils/statd/statd.c.orig nfs-utils-1.3.0/utils/statd/statd.c --- nfs-utils-1.3.0/utils/statd/statd.c.orig 2019-03-15 11:06:31.244216452 -0400 +++ nfs-utils-1.3.0/utils/statd/statd.c 2019-03-15 11:15:33.950086819 -0400 @@ -226,7 +226,8 @@ static void set_nlm_port(char *type, int fd = open(pathbuf, O_WRONLY); if (fd < 0 && errno == ENOENT) { /* probably module not loaded */ - system("modprobe lockd"); + if (system("modprobe lockd")) + {/* ignore return value */} fd = open(pathbuf, O_WRONLY); } if (fd >= 0) { @@ -237,6 +238,39 @@ static void set_nlm_port(char *type, int } else fprintf(stderr, "%s: failed to open %s: %m\n", name_p, pathbuf); } +int port = 0, out_port = 0; +int nlm_udp = 0, nlm_tcp = 0; + +inline static void +read_nfsconf(char **argv) +{ + char *s; + + conf_init(); + xlog_from_conffile("statd"); + + out_port = conf_get_num("statd", "outgoing-port", out_port); + port = conf_get_num("statd", "port", port); + + MY_NAME = conf_get_str("statd", "name"); + if (MY_NAME) + run_mode |= STATIC_HOSTNAME; + + s = conf_get_str("statd", "state-directory-path"); + if (s && !nsm_setup_pathnames(argv[0], s)) + exit(1); + + s = conf_get_str("statd", "ha-callout"); + if (s) + ha_callout_prog = s; + + nlm_tcp = conf_get_num("lockd", "port", nlm_tcp); + /* udp defaults to the same as tcp ! */ + nlm_udp = conf_get_num("lockd", "udp-port", nlm_tcp); + + if (conf_get_bool("statd", "no-notify", false)) + run_mode |= MODE_NO_NOTIFY; +} /* * Entry routine/main loop. @@ -244,11 +278,8 @@ static void set_nlm_port(char *type, int int main (int argc, char **argv) { extern char *optarg; - char *s; int pid; int arg; - int port = 0, out_port = 0; - int nlm_udp = 0, nlm_tcp = 0; struct rlimit rlim; char *env; @@ -273,23 +304,8 @@ int main (int argc, char **argv) /* Set hostname */ MY_NAME = NULL; - conf_init(); - xlog_from_conffile("statd"); - out_port = conf_get_num("statd", "outgoing-port", out_port); - port = conf_get_num("statd", "port", port); - MY_NAME = conf_get_str("statd", "name"); - if (MY_NAME) - run_mode |= STATIC_HOSTNAME; - s = conf_get_str("statd", "state-directory-path"); - if (s && !nsm_setup_pathnames(argv[0], s)) - exit(1); - s = conf_get_str("statd", "ha-callout"); - if (s) - ha_callout_prog = s; - - nlm_tcp = conf_get_num("lockd", "port", nlm_tcp); - /* udp defaults to the same as tcp ! */ - nlm_udp = conf_get_num("lockd", "udp-port", nlm_tcp); + /* Read nfs.conf */ + read_nfsconf(argv); /* Process command line switches */ while ((arg = getopt_long(argc, argv, "h?vVFNH:dn:p:o:P:LT:U:", longopts, NULL)) != EOF) {