mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
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:
parent
356863eb01
commit
9fcfb650d1
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=40605
|
@ -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.
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue