On Fri, Apr 21, 2023 at 02:43:55PM -0700, Luis Chamberlain wrote: > - if (xa_is_value(page)) > - swapped++; > + if (xa_is_value(folio)) > + swapped+=(folio_nr_pages(folio)); swapped += folio_nr_pages(folio); > if (xa_is_value(folio)) { > + long swaps_freed = 0; > if (unfalloc) > continue; > - nr_swaps_freed += !shmem_free_swap(mapping, > - indices[i], folio); > + swaps_freed = folio_nr_pages(folio); Why initialise it to 0 when you're about to set it to folio_nr_pages()? > + if (!shmem_free_swap(mapping, indices[i], folio)) { > + if (swaps_freed > 1) > + pr_warn("swaps freed > 1 -- %lu\n", swaps_freed); Debug code that escaped into this patch? > - info->swapped++; > + info->swapped+=folio_nr_pages(folio); Same comment as earlier. > - info->alloced--; > - info->swapped--; > + info->alloced-=num_swap_pages; > + info->swapped-=num_swap_pages; Spacing > - info->swapped--; > + info->swapped-= folio_nr_pages(folio); Spacing.