summaryrefslogtreecommitdiffstats
path: root/lib/libc
diff options
context:
space:
mode:
authormiod <miod@openbsd.org>2012-05-30 19:32:19 +0000
committermiod <miod@openbsd.org>2012-05-30 19:32:19 +0000
commit26be189a511c89149c6509ba90d930a6fc5425fa (patch)
tree33c55683e800293be5f393b4a5beda9ffece9966 /lib/libc
parentCorrectly compute the IOC3 device mask on MENET boards. (diff)
downloadwireguard-openbsd-26be189a511c89149c6509ba90d930a6fc5425fa.tar.xz
wireguard-openbsd-26be189a511c89149c6509ba90d930a6fc5425fa.zip
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 'lib/libc')
0 files changed, 0 insertions, 0 deletions