Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Jun 2013 22:47:01 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r251397 - head/sys/vm
Message-ID:  <201306042247.r54Ml1i3009183@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Tue Jun  4 22:47:01 2013
New Revision: 251397
URL: http://svnweb.freebsd.org/changeset/base/251397

Log:
  In vm_object_split(), busy and consequently unbusy the pages only when
  swap_pager_copy() is invoked, otherwise there is no reason to do so.
  This will eliminate the necessity to busy pages most of the times.
  
  Sponsored by:	EMC / Isilon storage division
  Reviewed by:	alc

Modified:
  head/sys/vm/vm_object.c

Modified: head/sys/vm/vm_object.c
==============================================================================
--- head/sys/vm/vm_object.c	Tue Jun  4 22:32:33 2013	(r251396)
+++ head/sys/vm/vm_object.c	Tue Jun  4 22:47:01 2013	(r251397)
@@ -1390,7 +1390,8 @@ retry:
 		vm_page_rename(m, new_object, idx);
 		vm_page_unlock(m);
 		/* page automatically made dirty by rename and cache handled */
-		vm_page_busy(m);
+		if (orig_object->type == OBJT_SWAP)
+			vm_page_busy(m);
 	}
 	if (orig_object->type == OBJT_SWAP) {
 		/*
@@ -1398,6 +1399,8 @@ retry:
 		 * and new_object's locks are released and reacquired. 
 		 */
 		swap_pager_copy(orig_object, new_object, offidxstart, 0);
+		TAILQ_FOREACH(m, &new_object->memq, listq)
+			vm_page_wakeup(m);
 
 		/*
 		 * Transfer any cached pages from orig_object to new_object.
@@ -1413,8 +1416,6 @@ retry:
 			    new_object);
 	}
 	VM_OBJECT_WUNLOCK(orig_object);
-	TAILQ_FOREACH(m, &new_object->memq, listq)
-		vm_page_wakeup(m);
 	VM_OBJECT_WUNLOCK(new_object);
 	entry->object.vm_object = new_object;
 	entry->offset = 0LL;



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