> I have a similar problem.
> 
> I have a NFS server (8.0 upgraded a couple times since Feb 2010) that
> locks up
> and requires a reboot.
> 
> The clients are busy vm's from VMWare ESXi using the NFS server for
> vmdk virtual
> disk storage.
> 
> The ESXi reports nfs server inactive and all the vm's post disk write
> errors when
> trying to write to their disk.
> 
> /etc/rc.d/nfsd restart fails to work (it can not kill the nfsd
> process)
> 
> The nfsd process runs at 100% cpu at rc_lo state in top.
> 
> reboot is the only fix.
> 
> It has only happened under two circumstances.
> 1) Installation of a VM using Windows 2008.
> 2) Migrating 16 million mail messages from a physical server to a VM
> running FreeBSD with ZFS file system as a VM on the ESXi box that uses
> NFS to store the VM's ZFS disk.
> 
> The NFS server uses ZFS also.

I don't think what you are seeing is the same as what others have reported.
(I have a hunch that your problem might be a replay cache problem.)

Please try the attached patch and make sure that your sys/rpc/svc.c
is at r205562 (upgrade if it isn't).

If this patch doesn't help, you could try using the experimental nfs
server (which doesn't use the generic replay cache), by adding "-e" to
mountd and nfsd.

Please let me know if the patch or switching to the experimental nfs
server helps, rick

--- rpc/replay.c.sav	2010-08-08 18:05:50.000000000 -0400
+++ rpc/replay.c	2010-08-08 18:16:43.000000000 -0400
@@ -90,8 +90,10 @@
 replay_setsize(struct replay_cache *rc, size_t newmaxsize)
 {
 
+	mtx_lock(&rc->rc_lock);
 	rc->rc_maxsize = newmaxsize;
 	replay_prune(rc);
+	mtx_unlock(&rc->rc_lock);
 }
 
 void
@@ -144,8 +146,8 @@
 	bool_t freed_one;
 
 	if (rc->rc_count >= REPLAY_MAX || rc->rc_size > rc->rc_maxsize) {
-		freed_one = FALSE;
 		do {
+			freed_one = FALSE;
 			/*
 			 * Try to free an entry. Don't free in-progress entries
 			 */
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"

Reply via email to