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) {
