Module Name:    src
Committed By:   christos
Date:           Sat Dec 14 16:19:28 UTC 2013

Modified Files:
        src/sys/nfs: nfs_export.c nfs_serv.c nfs_var.h

Log Message:
don't allow the nfs server module to unload if it has exported filesystems.


To generate a diff of this commit:
cvs rdiff -u -r1.57 -r1.58 src/sys/nfs/nfs_export.c
cvs rdiff -u -r1.166 -r1.167 src/sys/nfs/nfs_serv.c
cvs rdiff -u -r1.90 -r1.91 src/sys/nfs/nfs_var.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/nfs/nfs_export.c
diff -u src/sys/nfs/nfs_export.c:1.57 src/sys/nfs/nfs_export.c:1.58
--- src/sys/nfs/nfs_export.c:1.57	Sat Nov 23 09:20:46 2013
+++ src/sys/nfs/nfs_export.c	Sat Dec 14 11:19:28 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_export.c,v 1.57 2013/11/23 14:20:46 christos Exp $	*/
+/*	$NetBSD: nfs_export.c,v 1.58 2013/12/14 16:19:28 christos Exp $	*/
 
 /*-
  * Copyright (c) 1997, 1998, 2004, 2005, 2008 The NetBSD Foundation, Inc.
@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_export.c,v 1.57 2013/11/23 14:20:46 christos Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_export.c,v 1.58 2013/12/14 16:19:28 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -877,3 +877,10 @@ netexport_wrunlock(void)
 
 	rw_exit(&netexport_lock);
 }
+
+bool
+netexport_hasexports(void)
+{
+	
+	return nfs_pub.np_valid || !TAILQ_EMPTY(&netexport_list);
+}

Index: src/sys/nfs/nfs_serv.c
diff -u src/sys/nfs/nfs_serv.c:1.166 src/sys/nfs/nfs_serv.c:1.167
--- src/sys/nfs/nfs_serv.c:1.166	Sat Sep 14 18:29:08 2013
+++ src/sys/nfs/nfs_serv.c	Sat Dec 14 11:19:28 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_serv.c,v 1.166 2013/09/14 22:29:08 martin Exp $	*/
+/*	$NetBSD: nfs_serv.c,v 1.167 2013/12/14 16:19:28 christos Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -55,7 +55,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nfs_serv.c,v 1.166 2013/09/14 22:29:08 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nfs_serv.c,v 1.167 2013/12/14 16:19:28 christos Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -125,6 +125,8 @@ nfsserver_modcmd(modcmd_t cmd, void *arg
 		nfs_timer_srvinit(nfsrv_timer);
 		return 0;
 	case MODULE_CMD_FINI:
+		if (netexport_hasexports())
+			return EBUSY;
 		error = syscall_disestablish(NULL, nfsserver_syscalls);
 		if (error != 0) {
 			return error;

Index: src/sys/nfs/nfs_var.h
diff -u src/sys/nfs/nfs_var.h:1.90 src/sys/nfs/nfs_var.h:1.91
--- src/sys/nfs/nfs_var.h:1.90	Tue Mar  2 18:19:09 2010
+++ src/sys/nfs/nfs_var.h	Sat Dec 14 11:19:28 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: nfs_var.h,v 1.90 2010/03/02 23:19:09 pooka Exp $	*/
+/*	$NetBSD: nfs_var.h,v 1.91 2013/12/14 16:19:28 christos Exp $	*/
 
 /*-
  * Copyright (c) 1996 The NetBSD Foundation, Inc.
@@ -349,4 +349,5 @@ void netexport_rdlock(void);
 void netexport_rdunlock(void);
 void netexport_init(void);
 void netexport_fini(void);
+bool netexport_hasexports(void);
 #endif /* _KERNEL */

Reply via email to