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 */