diff options
author | Mark Johnston <markj@FreeBSD.org> | 2022-07-16 15:28:55 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2022-07-17 11:09:48 +0000 |
commit | fffc1c594a7382ae4da963dfa9901e549cfa5e9d (patch) | |
tree | 1dfa47cdb922f3df8a2d1d8424bfb7f3dff5367a | |
parent | cb6757c0a60a02d41bed4a47f1e74cf7ac336a6a (diff) | |
download | src-fffc1c594a7382ae4da963dfa9901e549cfa5e9d.tar.gz src-fffc1c594a7382ae4da963dfa9901e549cfa5e9d.zip |
vm_object: Release object swap charge in the swap pager destructor
With the removal of OBJT_DEFAULT, we can simply handle this in
swap_pager_dealloc(). No functional change intended.
Suggested by: alc
Reviewed by: alc, kib
Tested by: pho
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D35787
-rw-r--r-- | sys/vm/swap_pager.c | 14 | ||||
-rw-r--r-- | sys/vm/vm_object.c | 18 |
2 files changed, 14 insertions, 18 deletions
diff --git a/sys/vm/swap_pager.c b/sys/vm/swap_pager.c index 931659f1891b..c20360975c4b 100644 --- a/sys/vm/swap_pager.c +++ b/sys/vm/swap_pager.c @@ -787,6 +787,20 @@ swap_pager_dealloc(vm_object_t object) swp_pager_meta_free_all(object); object->handle = NULL; object->type = OBJT_DEAD; + + /* + * Release the allocation charge. + */ + if (object->cred != NULL) { + swap_release_by_cred(object->charge, object->cred); + object->charge = 0; + crfree(object->cred); + object->cred = NULL; + } + + /* + * Hide the object from swap_pager_swapoff(). + */ vm_object_clear_flag(object, OBJ_SWAP); } diff --git a/sys/vm/vm_object.c b/sys/vm/vm_object.c index 57904454eff7..bb29568ab5e4 100644 --- a/sys/vm/vm_object.c +++ b/sys/vm/vm_object.c @@ -702,27 +702,9 @@ vm_object_deallocate(vm_object_t object) } } -/* - * vm_object_destroy removes the object from the global object list - * and frees the space for the object. - */ void vm_object_destroy(vm_object_t object) { - - /* - * Release the allocation charge. - */ - if (object->cred != NULL) { - swap_release_by_cred(object->charge, object->cred); - object->charge = 0; - crfree(object->cred); - object->cred = NULL; - } - - /* - * Free the space for the object. - */ uma_zfree(obj_zone, object); } |