diff options
author | Konstantin Belousov <kib@FreeBSD.org> | 2010-05-10 11:53:40 +0000 |
---|---|---|
committer | Konstantin Belousov <kib@FreeBSD.org> | 2010-05-10 11:53:40 +0000 |
commit | 6e2175fc06d310ca0f4b790554af0c40dbbdc451 (patch) | |
tree | 29d605d9f204b2d557f1554cd701d8040d43e0a7 /sys/vm | |
parent | 98be8199837bb404b8158d703daff14a02df984a (diff) | |
download | src-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.c | 6 |
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); |