Messages in this thread | ![/](/images/icornerl.gif) | | From | Shakeel Butt <> | Date | Mon, 31 Aug 2020 07:44:33 -0700 | Subject | Re: [PATCH 4/5] mm: fix check_move_unevictable_pages() on THP |
| |
On Sun, Aug 30, 2020 at 2:08 PM Hugh Dickins <hughd@google.com> wrote: > > check_move_unevictable_pages() is used in making unevictable shmem pages > evictable: by shmem_unlock_mapping(), drm_gem_check_release_pagevec() and > i915/gem check_release_pagevec(). Those may pass down subpages of a huge > page, when /sys/kernel/mm/transparent_hugepage/shmem_enabled is "force". > > That does not crash or warn at present, but the accounting of vmstats > unevictable_pgs_scanned and unevictable_pgs_rescued is inconsistent: > scanned being incremented on each subpage, rescued only on the head > (since tails already appear evictable once the head has been updated). > > 5.8 commit 5d91f31faf8e ("mm: swap: fix vmstats for huge page") has > established that vm_events in general (and unevictable_pgs_rescued in > particular) should count every subpage: so follow that precedent here. > > Do this in such a way that if mem_cgroup_page_lruvec() is made stricter > (to check page->mem_cgroup is always set), no problem: skip the tails > before calling it, and add thp_nr_pages() to vmstats on the head. > > Signed-off-by: Hugh Dickins <hughd@google.com>
Thanks for catching this.
Reviewed-by: Shakeel Butt <shakeelb@google.com>
| ![\](/images/icornerr.gif) |