summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_contig.c
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2010-05-10 11:53:40 +0000
committerkib <kib@FreeBSD.org>2010-05-10 11:53:40 +0000
commit58ebe905c9801ed65df6e23bcb2efb9e8494dc93 (patch)
tree29d605d9f204b2d557f1554cd701d8040d43e0a7 /sys/vm/vm_contig.c
parent00ea3a4b935c820deebbf5e0be07c9af9626db1e (diff)
downloadFreeBSD-src-58ebe905c9801ed65df6e23bcb2efb9e8494dc93.zip
FreeBSD-src-58ebe905c9801ed65df6e23bcb2efb9e8494dc93.tar.gz
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
Diffstat (limited to 'sys/vm/vm_contig.c')
-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 1286c17..4d896a3 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);
OpenPOWER on IntegriCloud