svn commit: r309855 - in head/sys: fs/tmpfs kern

Alan Cox alc at FreeBSD.org
Sun Dec 11 19:24:42 UTC 2016


Author: alc
Date: Sun Dec 11 19:24:41 2016
New Revision: 309855
URL: https://svnweb.freebsd.org/changeset/base/309855

Log:
  When tmpfs and POSIX shm pagein a page for the sole purpose of performing
  truncation, immediately queue the page for asynchronous laundering rather
  than making the page pass through inactive queue first.
  
  Reviewed by:	kib, markj

Modified:
  head/sys/fs/tmpfs/tmpfs_subr.c
  head/sys/kern/uipc_shm.c

Modified: head/sys/fs/tmpfs/tmpfs_subr.c
==============================================================================
--- head/sys/fs/tmpfs/tmpfs_subr.c	Sun Dec 11 19:01:27 2016	(r309854)
+++ head/sys/fs/tmpfs/tmpfs_subr.c	Sun Dec 11 19:24:41 2016	(r309855)
@@ -1376,7 +1376,15 @@ retry:
 				    NULL);
 				vm_page_lock(m);
 				if (rv == VM_PAGER_OK) {
-					vm_page_deactivate(m);
+					/*
+					 * Since the page was not resident,
+					 * and therefore not recently
+					 * accessed, immediately enqueue it
+					 * for asynchronous laundering.  The
+					 * current operation is not regarded
+					 * as an access.
+					 */
+					vm_page_launder(m);
 					vm_page_unlock(m);
 					vm_page_xunbusy(m);
 				} else {

Modified: head/sys/kern/uipc_shm.c
==============================================================================
--- head/sys/kern/uipc_shm.c	Sun Dec 11 19:01:27 2016	(r309854)
+++ head/sys/kern/uipc_shm.c	Sun Dec 11 19:24:41 2016	(r309855)
@@ -460,7 +460,15 @@ retry:
 				    NULL);
 				vm_page_lock(m);
 				if (rv == VM_PAGER_OK) {
-					vm_page_deactivate(m);
+					/*
+					 * Since the page was not resident,
+					 * and therefore not recently
+					 * accessed, immediately enqueue it
+					 * for asynchronous laundering.  The
+					 * current operation is not regarded
+					 * as an access.
+					 */
+					vm_page_launder(m);
 					vm_page_unlock(m);
 					vm_page_xunbusy(m);
 				} else {


More information about the svn-src-all mailing list