On 26/10/23(Thu) 07:06, Miod Vallat wrote: > > I wonder if the diff below makes a difference. It's hard to debug and it > > might be worth adding a counter for bad swap slots. > > It did not help (but your diff is probably correct).
In that case I'd like to put both diffs in, are you ok with that? > > Index: uvm/uvm_anon.c > > =================================================================== > > RCS file: /cvs/src/sys/uvm/uvm_anon.c,v > > retrieving revision 1.56 > > diff -u -p -r1.56 uvm_anon.c > > --- uvm/uvm_anon.c 2 Sep 2023 08:24:40 -0000 1.56 > > +++ uvm/uvm_anon.c 22 Oct 2023 21:27:42 -0000 > > @@ -116,7 +116,7 @@ uvm_anfree_list(struct vm_anon *anon, st > > uvm_unlock_pageq(); /* free the daemon */ > > } > > } else { > > - if (anon->an_swslot != 0) { > > + if (anon->an_swslot != 0 && anon->an_swslot != SWSLOT_BAD) { > > /* This page is no longer only in swap. */ > > KASSERT(uvmexp.swpgonly > 0); > > atomic_dec_int(&uvmexp.swpgonly);