svn commit: r251397 - head/sys/vm
Attilio Rao
attilio at FreeBSD.org
Tue Jun 4 22:47:02 UTC 2013
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;
More information about the svn-src-all
mailing list