diff --git a/sys/nfs/nfs_export.c b/sys/nfs/nfs_export.c index a60b35e8a4f5..0e9230674e92 100644 --- a/sys/nfs/nfs_export.c +++ b/sys/nfs/nfs_export.c @@ -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 -__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 #include @@ -877,3 +877,10 @@ netexport_wrunlock(void) rw_exit(&netexport_lock); } + +bool +netexport_hasexports(void) +{ + + return nfs_pub.np_valid || !TAILQ_EMPTY(&netexport_list); +} diff --git a/sys/nfs/nfs_serv.c b/sys/nfs/nfs_serv.c index 19938e185c5b..6028323a3e80 100644 --- a/sys/nfs/nfs_serv.c +++ b/sys/nfs/nfs_serv.c @@ -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 -__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 #include @@ -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; diff --git a/sys/nfs/nfs_var.h b/sys/nfs/nfs_var.h index 542354a2fc1c..33724a6cad51 100644 --- a/sys/nfs/nfs_var.h +++ b/sys/nfs/nfs_var.h @@ -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 */