[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CVS: cvs.openbsd.org: src
- To: source-changes_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org
- Subject: CVS: cvs.openbsd.org: src
- From: Grigoriy Orlov <gluk_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org>
- Date: Sun, 27 May 2001 18:23:03 -0600 (MDT)
- Reply-to: Grigoriy Orlov <gluk_(_at_)_cvs_(_dot_)_openbsd_(_dot_)_org>
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