svn commit: r308052 - user/alc/PQ_LAUNDRY/sys/vm

Alan Cox alc at FreeBSD.org
Fri Oct 28 16:22:46 UTC 2016


Author: alc
Date: Fri Oct 28 16:22:45 2016
New Revision: 308052
URL: https://svnweb.freebsd.org/changeset/base/308052

Log:
  Tweak vm_pageout_flush()'s handling of the VM_PAGER_BAD case.  In
  particular, don't move the page from its current queue unless it was in
  the laundry.  And, if it was, then we don't expect it to be reused.
  
  Discussed with:	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	Fri Oct 28 16:21:31 2016	(r308051)
+++ user/alc/PQ_LAUNDRY/sys/vm/vm_pageout.c	Fri Oct 28 16:22:45 2016	(r308052)
@@ -554,13 +554,15 @@ vm_pageout_flush(vm_page_t *mc, int coun
 			break;
 		case VM_PAGER_BAD:
 			/*
-			 * Page outside of range of object. Right now we
-			 * essentially lose the changes by pretending it
-			 * worked.
+			 * The page is outside the object's range.  We pretend
+			 * that the page out worked and clean the page, so the
+			 * changes will be lost if the page is reclaimed by
+			 * the page daemon.
 			 */
 			vm_page_undirty(mt);
 			vm_page_lock(mt);
-			vm_page_deactivate(mt);
+			if (vm_page_in_laundry(mt))
+				vm_page_deactivate_noreuse(mt);
 			vm_page_unlock(mt);
 			break;
 		case VM_PAGER_ERROR:


More information about the svn-src-user mailing list