diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 71ac3e3a8539..8f23825e442f 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -1358,6 +1358,7 @@ vm_object_split(vm_map_entry_t entry) vm_object_t orig_object, new_object, source; vm_pindex_t idx, offidxstart; vm_size_t size; + objtype_t type; orig_object = entry->object.vm_object; if (orig_object->type != OBJT_DEFAULT && orig_object->type != OBJT_SWAP) @@ -1411,6 +1412,7 @@ vm_object_split(vm_map_entry_t entry) ("orig_object->charge < 0")); orig_object->charge -= ptoa(size); } + type = orig_object->type; retry: m = vm_page_find_least(orig_object, offidxstart); for (; m != NULL && (idx = m->pindex - offidxstart) < size; @@ -1462,6 +1464,9 @@ vm_object_split(vm_map_entry_t entry) vm_page_xbusy(m); } if (orig_object->type == OBJT_SWAP) { + if (type != orig_object->type) + printf("warning: object type changed while sleeping\n"); + /* * swap_pager_copy() can sleep, in which case the orig_object's * and new_object's locks are released and reacquired.