Oops, revert part of last fix. vm_pager_dealloc() can't be called until

after the pages are removed from the object...so fix the problem by
not printing the diagnostic for wired fictitious pages (which is normal).
This commit is contained in:
David Greenman 1998-10-23 05:43:13 +00:00
parent 356863eb01
commit 9fcfb650d1
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=40605

View file

@ -61,7 +61,7 @@
* any improvements or extensions that they make and grant Carnegie the
* rights to redistribute these changes.
*
* $Id: vm_object.c,v 1.130 1998/10/22 02:16:53 dg Exp $
* $Id: vm_object.c,v 1.131 1998/10/23 05:25:49 dg Exp $
*/
/*
@ -445,11 +445,6 @@ vm_object_terminate(object)
if (object->ref_count != 0)
panic("vm_object_terminate: object with references, ref_count=%d", object->ref_count);
/*
* Let the pager know object is dead.
*/
vm_pager_deallocate(object);
/*
* Now free any remaining pages. For internal objects, this also
* removes them from paging queues. Don't free wired pages, just
@ -465,12 +460,18 @@ vm_object_terminate(object)
vm_page_free(p);
cnt.v_pfree++;
} else {
printf("vm_object_terminate: not freeing wired page; wire_count=%d\n", p->wire_count);
if (!(p->flags & PG_FICTITIOUS))
printf("vm_object_terminate: not freeing wired page; wire_count=%d\n", p->wire_count);
vm_page_busy(p);
vm_page_remove(p);
}
}
/*
* Let the pager know object is dead.
*/
vm_pager_deallocate(object);
/*
* Remove the object from the global object list.
*/