Make out-of-swap checks more robust.
authormpi <mpi@openbsd.org>
Fri, 27 Oct 2023 19:18:53 +0000 (19:18 +0000)
committermpi <mpi@openbsd.org>
Fri, 27 Oct 2023 19:18:53 +0000 (19:18 +0000)
commitcb3ee63add04c3a8de3c9e9efbbe3a498ee80f1d
tree87a5d34c2f28cf550da4eedc6b5c5e2249bd984a
parentc3c0e069ac56281c3bd018f968736242453eaf12
Make out-of-swap checks more robust.

Consider that the swap space is full when 99% of it is filled with pages that
are no longer present in memory.  This prevents deadlocks when out-of-swap if
some swap ranges had I/O errors and have been marked as 'bad', or if some
pages are unreachable by the pagedaemon and still holding some slots.

Also introduce uvm_swapisfilled() to check if there are some free slots in
the swap.  Note that we consider the swap space completly filled if it is not
possible to write a full cluster.  This prevents deadlocks if a few slots are
never allocated.

ok miod@
sys/uvm/uvm_pdaemon.c
sys/uvm/uvm_swap.c
sys/uvm/uvm_swap.h
sys/uvm/uvmexp.h