summaryrefslogtreecommitdiff
path: root/distrib/amd64
diff options
context:
space:
mode:
authorMiod Vallat <miod@cvs.openbsd.org>2012-05-30 19:32:20 +0000
committerMiod Vallat <miod@cvs.openbsd.org>2012-05-30 19:32:20 +0000
commit4549bc77a3f6e2d94d47fedb36869999184c528d (patch)
tree2f6cdf29580d9580d4ab18f9b30c543bb95bac12 /distrib/amd64
parentefe7d7e7f533cee65ce661a43efeb80fda3257fb (diff)
Fix a few issues in the pressure logic when the available buffers run low:
- make sure the buffer reclaiming loop in buf_get() actually does something but spin, if `backoffpages' is nonzero and all free queues have been drained. - don't forget to set a poor man's condition variable to nonzero before tsleeping on it in bufadjust(), otherwise you'll never get woken up. - don't be too greedy and reassing backoffpages a large amount immediately after bufadjust() has been called. This fixes reproduceable hangs seen during heavy I/O (such as `make install' of many large files, e.g. run in /usr/src/lib with NOMAN=) on systems with a challenged number of pages (less than a few thousands, total). Part of this is temporary bandaid until a better pressure logic is devised, but it's solving an immediate problem. Been in snapshots for a solid month.
Diffstat (limited to 'distrib/amd64')
0 files changed, 0 insertions, 0 deletions