aboutsummaryrefslogtreecommitdiff
path: root/sys/vm
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2010-05-10 11:53:40 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2010-05-10 11:53:40 +0000
commit6e2175fc06d310ca0f4b790554af0c40dbbdc451 (patch)
tree29d605d9f204b2d557f1554cd701d8040d43e0a7 /sys/vm
parent98be8199837bb404b8158d703daff14a02df984a (diff)
downloadsrc-6e2175fc06d310ca0f4b790554af0c40dbbdc451.tar.gz
src-6e2175fc06d310ca0f4b790554af0c40dbbdc451.zip
Continue cleaning the queue instead of moving to the next queue or
bailing out if acquisition of page lock caused page position in the queue to change. Pointed out by: alc
Notes
Notes: svn path=/head/; revision=207846
Diffstat (limited to 'sys/vm')
-rw-r--r--sys/vm/vm_contig.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/sys/vm/vm_contig.c b/sys/vm/vm_contig.c
index 1286c170d1ca..4d896a349a00 100644
--- a/sys/vm/vm_contig.c
+++ b/sys/vm/vm_contig.c
@@ -168,10 +168,8 @@ vm_contig_launder(int queue)
if ((m->flags & PG_MARKER) != 0)
continue;
- if (!vm_pageout_page_lock(m, &next)) {
- vm_page_unlock(m);
- return (FALSE);
- }
+ if (!vm_pageout_page_lock(m, &next))
+ continue;
KASSERT(VM_PAGE_INQUEUE2(m, queue),
("vm_contig_launder: page %p's queue is not %d", m, queue));
error = vm_contig_launder_page(m, &next);