Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 5 Dec 2000 22:51:00 -0800 (PST)
From:      Matt Dillon <dillon@earth.backplane.com>
To:        Barry Lustig <barry@lustig.com>
Cc:        stable@freebsd.org, Garance A Drosihn <drosih@rpi.edu>
Subject:   Re: VMware hanging
Message-ID:  <200012060651.eB66p0c91421@earth.backplane.com>
References:  <20001118231633.A85206@evilcode.com> <200011190635.eAJ6ZRS94516@grumpy.dyndns.org> <20001118230305.A83848@evilcode.com> <20001119151138.A7434@bsdvm.jtjang.idv.tw> <200011192202.eAJM2cG03593@billy-club.village.org> <200011192239.eAJMdDa90818@earth.backplane.com>  <200011192308.eAJN8q714360@whizzo.transsys.com> <200011192324.eAJNO1891133@earth.backplane.com> <20001205232913.15317.qmail@devious.lustig.com> <200012060019.eB60JgJ88193@earth.backplane.com> <20001206023936.15587.qmail@devious.lustig.com> <200012060324.eB63OvG90385@earth.backplane.com> <20001206051514.15819.qmail@devious.lustig.com>

next in thread | previous in thread | raw e-mail | index | archive | help

    Ok, your system appears to be locked up in the buffer cache code.  
    Something (probably vmware) created over 1800 dirty buffers.  The
    high water mark is less then 500.

	(kgdb) print numdirtybuffers
	$8 = 0x71f		<--------- oops
	(kgdb) print hidirtybuffers
	$9 = 0x1e7

    I believe what is going on here is that some process is writing
    data through the filesystem and bypassing the low-memory bwillwrite()
    code.

    I'm going to hazzard a guess that it could be writev(), which missed
    my bwillwrite() patch.  Please try the patch below.  If it isn't this
    it's got to be something similar, somewhere.

					-Matt

Index: kern/sys_generic.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/sys_generic.c,v
retrieving revision 1.55.2.8
diff -u -r1.55.2.8 sys_generic.c
--- kern/sys_generic.c	2000/11/26 02:30:04	1.55.2.8
+++ kern/sys_generic.c	2000/12/06 06:49:33
@@ -494,6 +494,7 @@
 	}
 #endif
 	cnt = auio.uio_resid;
+	bwillwrite();
 	if ((error = fo_write(fp, &auio, fp->f_cred, 0, p))) {
 		if (auio.uio_resid != cnt && (error == ERESTART ||
 		    error == EINTR || error == EWOULDBLOCK))


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200012060651.eB66p0c91421>