svn commit: r255216 - head/sys/fs/nfsclient
Rick Macklem
rmacklem at FreeBSD.org
Wed Sep 4 22:47:57 UTC 2013
Author: rmacklem
Date: Wed Sep 4 22:47:56 2013
New Revision: 255216
URL: http://svnweb.freebsd.org/changeset/base/255216
Log:
Crashes have been observed for NFSv4.1 mounts when the system
is being shut down which were caused by the nfscbd_pool being
destroyed before the backchannel is disabled. This patch is
believed to fix the problem, by simply avoiding ever destroying
the nfscbd_pool. Since the NFS client module cannot be unloaded,
this should not cause a memory leak.
MFC after: 2 weeks
Modified:
head/sys/fs/nfsclient/nfs_clkrpc.c
Modified: head/sys/fs/nfsclient/nfs_clkrpc.c
==============================================================================
--- head/sys/fs/nfsclient/nfs_clkrpc.c Wed Sep 4 22:10:16 2013 (r255215)
+++ head/sys/fs/nfsclient/nfs_clkrpc.c Wed Sep 4 22:47:56 2013 (r255216)
@@ -278,17 +278,15 @@ nfsrvd_cbinit(int terminating)
while (nfs_numnfscbd > 0)
msleep(&nfs_numnfscbd, NFSDLOCKMUTEXPTR, PZERO,
"nfscbdt", 0);
- NFSD_UNLOCK();
- svcpool_destroy(nfscbd_pool);
- nfscbd_pool = NULL;
- } else
- NFSD_UNLOCK();
+ }
- nfscbd_pool = svcpool_create("nfscbd", NULL);
- nfscbd_pool->sp_rcache = NULL;
- nfscbd_pool->sp_assign = NULL;
- nfscbd_pool->sp_done = NULL;
-
- NFSD_LOCK();
+ if (nfscbd_pool == NULL) {
+ NFSD_UNLOCK();
+ nfscbd_pool = svcpool_create("nfscbd", NULL);
+ nfscbd_pool->sp_rcache = NULL;
+ nfscbd_pool->sp_assign = NULL;
+ nfscbd_pool->sp_done = NULL;
+ NFSD_LOCK();
+ }
}
More information about the svn-src-all
mailing list