From owner-cvs-all Mon Jul 5 4: 0:54 1999 Delivered-To: cvs-all@freebsd.org Received: from ren.detir.qld.gov.au (ns.detir.qld.gov.au [203.46.81.66]) by hub.freebsd.org (Postfix) with ESMTP id DE6DE14E2E; Mon, 5 Jul 1999 04:00:40 -0700 (PDT) (envelope-from syssgm@detir.qld.gov.au) Received: by ren.detir.qld.gov.au; id VAA21915; Mon, 5 Jul 1999 21:00:06 +1000 (EST) Received: from ogre.detir.qld.gov.au(167.123.8.3) by ren.detir.qld.gov.au via smap (3.2) id xmaa21907; Mon, 5 Jul 99 20:59:53 +1000 Received: from atlas.detir.qld.gov.au (atlas.detir.qld.gov.au [167.123.8.9]) by ogre.detir.qld.gov.au (8.8.8/8.8.7) with ESMTP id UAA04335; Mon, 5 Jul 1999 20:59:53 +1000 (EST) Received: from nymph.detir.qld.gov.au (nymph.detir.qld.gov.au [167.123.10.10]) by atlas.detir.qld.gov.au (8.8.5/8.8.5) with ESMTP id UAA02077; Mon, 5 Jul 1999 20:59:52 +1000 (EST) Received: from nymph.detir.qld.gov.au (localhost.detir.qld.gov.au [127.0.0.1]) by nymph.detir.qld.gov.au (8.8.8/8.8.7) with ESMTP id UAA24859; Mon, 5 Jul 1999 20:59:51 +1000 (EST) (envelope-from syssgm@nymph.detir.qld.gov.au) Message-Id: <199907051059.UAA24859@nymph.detir.qld.gov.au> To: Kirk McKusick Cc: cvs-committers@freebsd.org, cvs-all@FreeBSD.org, syssgm@detir.qld.gov.au Subject: Re: cvs commit: src/sys/i386/i386 machdep.c src/sys/kern vfs_bio.c vfs_subr.c src/sys/sys buf.h kernel.h proc.h src/sys/vm vm_pageout.c vm_pager.c References: <199907040025.RAA83209@freefall.freebsd.org> In-Reply-To: <199907040025.RAA83209@freefall.freebsd.org> from Kirk McKusick at "Sat, 03 Jul 1999 17:25:39 -0700" Date: Mon, 05 Jul 1999 20:59:51 +1000 From: Stephen McKay Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk On Saturday, 3rd July 1999, Kirk McKusick wrote: > A small race condition was fixed in getpbuf() in vm/vm_pager.c. That's one butt ugly goto! Here is my suggested (untested) reformatting: Index: vm_pager.c =================================================================== RCS file: /cvs/src/sys/vm/vm_pager.c,v retrieving revision 1.50 diff -u -c -r1.50 vm_pager.c *** vm_pager.c 1999/07/04 00:25:38 1.50 --- vm_pager.c 1999/07/05 10:50:41 *************** *** 377,394 **** s = splvm(); ! retry: ! if (pfreecnt) { ! while (*pfreecnt == 0) { ! tsleep(pfreecnt, PVM, "wswbuf0", 0); } - } ! /* get a bp from the swap buffer header pool */ ! while ((bp = TAILQ_FIRST(&bswlist)) == NULL) { bswneeded = 1; tsleep(&bswneeded, PVM, "wswbuf1", 0); ! goto retry; /* loop in case someone else grabbed one */ } TAILQ_REMOVE(&bswlist, bp, b_freelist); if (pfreecnt) --- 377,396 ---- s = splvm(); ! for (;;) { ! if (pfreecnt) { ! while (*pfreecnt == 0) { ! tsleep(pfreecnt, PVM, "wswbuf0", 0); ! } } ! /* get a bp from the swap buffer header pool */ ! if ((bp = TAILQ_FIRST(&bswlist)) != NULL) ! break; ! bswneeded = 1; tsleep(&bswneeded, PVM, "wswbuf1", 0); ! /* loop in case someone else grabbed one */ } TAILQ_REMOVE(&bswlist, bp, b_freelist); if (pfreecnt) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message