summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2003-01-14 06:57:03 +0000
committeralc <alc@FreeBSD.org>2003-01-14 06:57:03 +0000
commitc7ca47fcc7cd393f626b58b6b5e5c6d1c05494d9 (patch)
tree24db1344150e130dd55fba25b85388b5264f1cb1 /sys/kern
parent8f97c15f80b1b5c708048e55765ff56df527eb82 (diff)
downloadFreeBSD-src-c7ca47fcc7cd393f626b58b6b5e5c6d1c05494d9.zip
FreeBSD-src-c7ca47fcc7cd393f626b58b6b5e5c6d1c05494d9.tar.gz
- Update vm_pageout_deficit using atomic operations. It's a simple
counter outside the scope of existing locks. - Eliminate a redundant clearing of vm_pageout_deficit.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_bio.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/vfs_bio.c b/sys/kern/vfs_bio.c
index a4e5b6e..3293ab4 100644
--- a/sys/kern/vfs_bio.c
+++ b/sys/kern/vfs_bio.c
@@ -2757,7 +2757,8 @@ allocbuf(struct buf *bp, int size)
VM_ALLOC_SYSTEM | VM_ALLOC_WIRED);
if (m == NULL) {
VM_WAIT;
- vm_pageout_deficit += desiredpages - bp->b_npages;
+ atomic_add_int(&vm_pageout_deficit,
+ desiredpages - bp->b_npages);
} else {
vm_page_lock_queues();
vm_page_wakeup(m);
@@ -3488,7 +3489,8 @@ tryagain:
VM_ALLOC_SYSTEM | VM_ALLOC_WIRED);
vm_object_unlock(kernel_object);
if (!p) {
- vm_pageout_deficit += (to - from) >> PAGE_SHIFT;
+ atomic_add_int(&vm_pageout_deficit,
+ (to - from) >> PAGE_SHIFT);
VM_WAIT;
goto tryagain;
}
OpenPOWER on IntegriCloud