svn commit: r301184 - stable/10/sys/vm
Konstantin Belousov
kib at FreeBSD.org
Thu Jun 2 02:39:41 UTC 2016
Author: kib
Date: Thu Jun 2 02:39:40 2016
New Revision: 301184
URL: https://svnweb.freebsd.org/changeset/base/301184
Log:
MFC r300758:
Prevent parallel object collapses.
Modified:
stable/10/sys/vm/vm_object.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/vm/vm_object.c
==============================================================================
--- stable/10/sys/vm/vm_object.c Thu Jun 2 02:36:06 2016 (r301183)
+++ stable/10/sys/vm/vm_object.c Thu Jun 2 02:39:40 2016 (r301184)
@@ -1721,6 +1721,9 @@ vm_object_collapse(vm_object_t object)
* case.
*/
if (backing_object->ref_count == 1) {
+ vm_object_pip_add(object, 1);
+ vm_object_pip_add(backing_object, 1);
+
/*
* If there is exactly one reference to the backing
* object, we can collapse it into the parent.
@@ -1792,11 +1795,13 @@ vm_object_collapse(vm_object_t object)
KASSERT(backing_object->ref_count == 1, (
"backing_object %p was somehow re-referenced during collapse!",
backing_object));
+ vm_object_pip_wakeup(backing_object);
backing_object->type = OBJT_DEAD;
backing_object->ref_count = 0;
VM_OBJECT_WUNLOCK(backing_object);
vm_object_destroy(backing_object);
+ vm_object_pip_wakeup(object);
object_collapses++;
} else {
/*
More information about the svn-src-all
mailing list