svn commit: r307867 - user/alc/PQ_LAUNDRY/sys/vm
Alan Cox
alc at FreeBSD.org
Mon Oct 24 17:02:27 UTC 2016
Author: alc
Date: Mon Oct 24 17:02:25 2016
New Revision: 307867
URL: https://svnweb.freebsd.org/changeset/base/307867
Log:
Don't rely upon the pager's put pages function to requeue pages, unless
that function returned VM_PAGER_PEND.
Reviewed by: kib, markj
Modified:
user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
Modified: user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c
==============================================================================
--- user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Mon Oct 24 16:40:27 2016 (r307866)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c Mon Oct 24 17:02:25 2016 (r307867)
@@ -405,7 +405,6 @@ vm_pageout_cluster(vm_page_t m)
*/
vm_page_assert_unbusied(m);
KASSERT(m->hold_count == 0, ("page %p is held", m));
- vm_page_dequeue(m);
vm_page_unlock(m);
mc[vm_pageout_page_count] = pb = ps = m;
@@ -448,7 +447,6 @@ more:
ib = 0;
break;
}
- vm_page_dequeue(p);
vm_page_unlock(p);
mc[--page_base] = pb = p;
++pageout_count;
@@ -474,7 +472,6 @@ more:
vm_page_unlock(p);
break;
}
- vm_page_dequeue(p);
vm_page_unlock(p);
mc[page_base + pageout_count] = ps = p;
++pageout_count;
@@ -550,6 +547,11 @@ vm_pageout_flush(vm_page_t *mc, int coun
("vm_pageout_flush: page %p is not write protected", mt));
switch (pageout_status[i]) {
case VM_PAGER_OK:
+ vm_page_lock(mt);
+ if (vm_page_in_laundry(mt))
+ vm_page_deactivate_noreuse(mt);
+ vm_page_unlock(mt);
+ /* FALLTHROUGH */
case VM_PAGER_PEND:
numpagedout++;
break;
More information about the svn-src-user
mailing list