From owner-cvs-all Mon Jul 5 4:20:43 1999 Delivered-To: cvs-all@freebsd.org Received: from implode.root.com (root.com [209.102.106.178]) by hub.freebsd.org (Postfix) with ESMTP id 0A58314DB9; Mon, 5 Jul 1999 04:20:37 -0700 (PDT) (envelope-from root@implode.root.com) Received: from implode.root.com (localhost [127.0.0.1]) by implode.root.com (8.8.8/8.8.5) with ESMTP id EAA02790; Mon, 5 Jul 1999 04:20:10 -0700 (PDT) Message-Id: <199907051120.EAA02790@implode.root.com> To: Stephen McKay Cc: Kirk McKusick , cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org 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 In-reply-to: Your message of "Mon, 05 Jul 1999 20:59:51 +1000." <199907051059.UAA24859@nymph.detir.qld.gov.au> From: David Greenman Reply-To: dg@root.com Date: Mon, 05 Jul 1999 04:20:10 -0700 Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk Looks good - please commit. -DG David Greenman Co-founder/Principal Architect, The FreeBSD Project - http://www.freebsd.org Creator of high-performance Internet servers - http://www.terasolutions.com >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