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 {
                        /*
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to