diff options
author | dg <dg@FreeBSD.org> | 1998-10-23 05:43:13 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 1998-10-23 05:43:13 +0000 |
commit | b898ae170b41b12e66753bfa9f82eea9a5bb794e (patch) | |
tree | f6a1fbf00d25af2a8e6c34fac61e0a74c504bcac /sys/vm | |
parent | 599836ef434a6f0153f080a69ccb802ff9a92aa0 (diff) | |
download | FreeBSD-src-b898ae170b41b12e66753bfa9f82eea9a5bb794e.zip FreeBSD-src-b898ae170b41b12e66753bfa9f82eea9a5bb794e.tar.gz |
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).
Diffstat (limited to 'sys/vm')
-rw-r--r-- | sys/vm/vm_object.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 2228e4b..3557e9d 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -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 $ */ /* @@ -446,11 +446,6 @@ vm_object_terminate(object) 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 * remove them from the object. @@ -465,13 +460,19 @@ 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. */ simple_lock(&vm_object_list_lock); |