Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 24 Oct 2016 17:02:26 +0000 (UTC)
From:      Alan Cox <alc@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r307867 - user/alc/PQ_LAUNDRY/sys/vm
Message-ID:  <201610241702.u9OH2Q0h018603@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201610241702.u9OH2Q0h018603>