Put back in the simplification of the aiodone daemon.
authormpi <mpi@openbsd.org>
Sat, 13 May 2023 09:24:59 +0000 (09:24 +0000)
committermpi <mpi@openbsd.org>
Sat, 13 May 2023 09:24:59 +0000 (09:24 +0000)
commita375eb795cc698fba4b8d5cb4d5f6a02e53fc10c
tree96e7d8c1990ca3b00cf660cb512146175de82a9d
parent9b0855c6d8c640364c58be7328e1294d6594b791
Put back in the simplification of the aiodone daemon.

Previous "breakage" of the swap on arm64 has been found to be an issue
on one machine the rockpro/arm64 related to a deadlock built into the
sdmmc(4) stack interacting with swapping code both running under
KERNEL_LOCK().

This issue is easily reproducible on -current and entering swap when
building LLVM on a rockpro crashes the machine by memory corruption.

Tested by mlarkin@ on octeon & i386, by myself on amd64 & arm64 and by
sthen@ on i386 port bulk.

ok beck@ some time ago.

Previous commit message:

Simplify the aiodone daemon which is only used for async writes.

- Remove unused support for asynchronous read, including error conditions

- Grab the proper lock for each page that has been written to swap.  This
allows to enable an assertion in uvm_page_unbusy().

- Move the uvm_anon_release() call outside of uvm_page_unbusy() and
assert for the different anon cases.

ok beck@, kettenis@
sys/uvm/uvm_aobj.c
sys/uvm/uvm_aobj.h
sys/uvm/uvm_page.c
sys/uvm/uvm_pager.c