diff options
author | kib <kib@FreeBSD.org> | 2010-05-10 11:53:40 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2010-05-10 11:53:40 +0000 |
commit | 58ebe905c9801ed65df6e23bcb2efb9e8494dc93 (patch) | |
tree | 29d605d9f204b2d557f1554cd701d8040d43e0a7 /sys/vm/vm_contig.c | |
parent | 00ea3a4b935c820deebbf5e0be07c9af9626db1e (diff) | |
download | FreeBSD-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.c | 6 |
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); |