[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

CVS: cvs.openbsd.org: src



CVSROOT:	/cvs
Module name:	src
Changes by:	gluk_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org	2001/05/27 18:23:02

Modified files:
	sys/kern       : vfs_cluster.c 

Log message:
cluster_rbuild() have a race between incore and getblk. incore() returns
zero indicating that buffer is not in a cache, but getblk() going to sleep:
getblk->getnewbuf->tsleep. When getnewbuf() returns after a sleep, getblk()
may find B_DONE buffer in hash and return it. When io operation finishes
biodone() calls cluster_callback() which moves pages from one big cluster
buffer into several component buffers and calls biodone() for every component
buffer. Since there are a component buffer with B_DONE already set, biodone()
panices: "biodone already".

costa@	ok.




Visit your host, monkey.org