Sprinkle uvm_obj_destroy() over UVM object recycling code.
authormpi <mpi@openbsd.org>
Sat, 23 Oct 2021 14:42:07 +0000 (14:42 +0000)
committermpi <mpi@openbsd.org>
Sat, 23 Oct 2021 14:42:07 +0000 (14:42 +0000)
commit2c850ee81a4b41d844dad384f73c7c6bad609319
tree56b8169c323c2ef1298dc9cd013ce0c8244ba2ee
parent01f29c5863db264d49df9ef75eb14989e256c631
Sprinkle uvm_obj_destroy() over UVM object recycling code.

For now, only assert that the tree of pages is empty in uvm_obj_destroy().
This will soon be used to free the per-UVM object lock.

While here call uvm_obj_init() when new vnodes are allocated instead of
in uvn_attach().  Because vnodes and there associated UVM object are
currently never freed, it isn't easy to know where/when to garbage
collect the associated lock.  So simply check that the reference of a
given object is 0 when uvn_attach().

Tested by many as part of a bigger diff.

ok kettenis@
sys/kern/vfs_subr.c
sys/uvm/uvm_aobj.c
sys/uvm/uvm_device.c
sys/uvm/uvm_object.c
sys/uvm/uvm_vnode.c