--- Net2/vm/vm_object.c 2018/04/24 18:09:22 1.1.1.2 +++ Net2/vm/vm_object.c 2018/04/24 18:14:58 1.1.1.3 @@ -33,7 +33,8 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * @(#)vm_object.c 7.4 (Berkeley) 5/7/91 + * from: @(#)vm_object.c 7.4 (Berkeley) 5/7/91 + * vm_object.c,v 1.4 1993/06/30 03:48:26 andrew Exp * * * Copyright (c) 1987, 1990 Carnegie-Mellon University. @@ -248,6 +249,26 @@ void vm_object_deallocate(object) */ if (object->can_persist) { + register vm_page_t p; + + /* + * Check for dirty pages in object + * Print warning as this may signify kernel bugs + * pk@cs.few.eur.nl - 4/15/93 + */ + p = (vm_page_t) queue_first(&object->memq); + while (!queue_end(&object->memq, (queue_entry_t) p)) { + VM_PAGE_CHECK(p); + + if (pmap_is_modified(VM_PAGE_TO_PHYS(p)) || + !p->clean) { + + printf("vm_object_dealloc: persistent object %x isn't clean\n", object); + goto cant_persist; + } + + p = (vm_page_t) queue_next(&p->listq); + } queue_enter(&vm_object_cached_list, object, vm_object_t, cached_list); @@ -260,6 +281,7 @@ void vm_object_deallocate(object) vm_object_cache_trim(); return; } + cant_persist:; /* * Make sure no one can look us up now.