diff --git a/nfs.conf b/nfs.conf
index 118f638..ea8204b 100644
--- a/nfs.conf
+++ b/nfs.conf
@@ -9,6 +9,8 @@
 # debug=0
 #
 #[gssd]
+# verbosity=0
+# rpc-verbosity=0
 # use-memcache=0
 # use-machine-creds=1
 # avoid-dns=1
@@ -64,6 +66,7 @@
 #
 #[sm-notify]
 # debug=0
+# force=0
 # retry-time=900
 # outgoing-port=
 # outgoing-addr=
diff --git a/systemd/nfs.conf.man b/systemd/nfs.conf.man
index 9700586..0953b80 100644
--- a/systemd/nfs.conf.man
+++ b/systemd/nfs.conf.man
@@ -204,6 +204,8 @@ for details.
 .TP
 .B gssd
 Recognized values:
+.BR verbosity ,
+.BR rpc-verbosity ,
 .BR use-memcache ,
 .BR use-machine-creds ,
 .BR avoid-dns ,
diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c
index 10d50d3..05defb4 100644
--- a/utils/gssd/gssd.c
+++ b/utils/gssd/gssd.c
@@ -889,6 +889,9 @@ main(int argc, char *argv[])
 
 	read_gss_conf();
 
+	verbosity = conf_get_num("gssd", "verbosity", verbosity);
+	rpc_verbosity = conf_get_num("gssd", "rpc-verbosity", rpc_verbosity);
+
 	while ((opt = getopt(argc, argv, "DfvrlmnMp:k:d:t:T:R:")) != -1) {
 		switch (opt) {
 			case 'f':
diff --git a/utils/gssd/svcgssd.c b/utils/gssd/svcgssd.c
index 1fb579a..9d3ca40 100644
--- a/utils/gssd/svcgssd.c
+++ b/utils/gssd/svcgssd.c
@@ -113,6 +113,10 @@ main(int argc, char *argv[])
 	else
 		principal = s;
 
+	verbosity = conf_get_num("svcgssd", "Verbosity", verbosity);
+	rpc_verbosity = conf_get_num("svcgssd", "RPC-Verbosity", rpc_verbosity);
+	idmap_verbosity = conf_get_num("svcgssd", "IDMAP-Verbosity", idmap_verbosity);
+
 	while ((opt = getopt(argc, argv, "fivrnp:")) != -1) {
 		switch (opt) {
 			case 'f':
diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c
index 03efbea..9317fd7 100644
--- a/utils/idmapd/idmapd.c
+++ b/utils/idmapd/idmapd.c
@@ -263,6 +263,10 @@ main(int argc, char **argv)
 				strlcpy(pipefsdir, xpipefsdir, sizeof(pipefsdir));
 			CONF_SAVE(nobodyuser, conf_get_str("Mapping", "Nobody-User"));
 			CONF_SAVE(nobodygroup, conf_get_str("Mapping", "Nobody-Group"));
+			if (conf_get_bool("General", "server-only", false))
+				clientstart = 0;
+			if (conf_get_bool("General", "client-only", false))
+				serverstart = 0;
 		}
 	} else {
 		conf_path = NFS_CONFFILE;
@@ -278,6 +282,10 @@ main(int argc, char **argv)
 				"cache-expiration", DEFAULT_IDMAP_CACHE_EXPIRY);
 		CONF_SAVE(nobodyuser, conf_get_str("Mapping", "Nobody-User"));
 		CONF_SAVE(nobodygroup, conf_get_str("Mapping", "Nobody-Group"));
+		if (conf_get_bool("General", "server-only", false))
+			clientstart = 0;
+		if (conf_get_bool("General", "client-only", false))
+			serverstart = 0;
 	}
 
 	while ((opt = getopt(argc, argv, GETOPTSTR)) != -1)
diff --git a/utils/statd/sm-notify.c b/utils/statd/sm-notify.c
index cc4d425..248b950 100644
--- a/utils/statd/sm-notify.c
+++ b/utils/statd/sm-notify.c
@@ -46,6 +46,7 @@
 #define NLM_END_GRACE_FILE	"/proc/fs/lockd/nlm_end_grace"
 
 int lift_grace = 1;
+int force = 0;
 
 struct nsm_host {
 	struct nsm_host *	next;
@@ -477,13 +478,30 @@ nsm_lift_grace_period(void)
 	close(fd);
 	return;
 }
+inline static void 
+read_nfsconf(char **argv)
+{
+	char *s;
+
+	conf_init();
+	xlog_from_conffile("sm-notify");
+	opt_max_retry = conf_get_num("sm-notify", "retry-time", opt_max_retry / 60) * 60;
+	opt_srcport = conf_get_str("sm-notify", "outgoing-port");
+	opt_srcaddr = conf_get_str("sm-notify", "outgoing-addr");
+	lift_grace = conf_get_bool("sm-notify", "lift-grace", lift_grace);
+
+	s = conf_get_str("statd", "state-directory-path");
+	if (s && !nsm_setup_pathnames(argv[0], s))
+		exit(1);
+	opt_update_state = conf_get_bool("sm-notify", "update-state", opt_update_state);
+	force = conf_get_bool("sm-notify", "force", force);
+}
 
 int
 main(int argc, char **argv)
 {
-	int	c, sock, force = 0;
+	int	c, sock;
 	char *	progname;
-	char *	s;
 
 	progname = strrchr(argv[0], '/');
 	if (progname != NULL)
@@ -491,15 +509,7 @@ main(int argc, char **argv)
 	else
 		progname = argv[0];
 
-	conf_init();
-	xlog_from_conffile("sm-notify");
-	opt_max_retry = conf_get_num("sm-notify", "retry-time", opt_max_retry / 60) * 60;
-	opt_srcport = conf_get_str("sm-notify", "outgoing-port");
-	opt_srcaddr = conf_get_str("sm-notify", "outgoing-addr");
-	lift_grace = conf_get_bool("sm-notify", "lift-grace", lift_grace);
-	s = conf_get_str("statd", "state-directory-path");
-	if (s && !nsm_setup_pathnames(argv[0], s))
-		exit(1);
+	read_nfsconf(argv);
 
 	while ((c = getopt(argc, argv, "dm:np:v:P:f")) != -1) {
 		switch (c) {
