proc: convert gather_stats to use a folio
Patch series "Use folio APIs in procfs". We're down to very few users of the PageFoo macros, with proc being a major user. After this patchset and another patchset I have for khugepaged, we can get rid of PageActive, PageReadahead and PageSwapBacked. This patchset has the usual advantages in its own right of removing hidden calls to compound_head(). We have the page table lock, so the mapcount & refcount are stable and there can't be any races with folios suddenly becoming tail pages. This patch (of 4): Replaces six calls to compound_head() with one. Shrinks the function from 5054 bytes to 1756 bytes in an allmodconfig build. Link: https://lkml.kernel.org/r/20240403171456.1445117-1-willy@infradead.org Link: https://lkml.kernel.org/r/20240403171456.1445117-2-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Christian Brauner <brauner@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
8c9e8381ea
commit
f1dc623fa0
@ -2549,28 +2549,29 @@ struct numa_maps_private {
|
||||
static void gather_stats(struct page *page, struct numa_maps *md, int pte_dirty,
|
||||
unsigned long nr_pages)
|
||||
{
|
||||
struct folio *folio = page_folio(page);
|
||||
int count = page_mapcount(page);
|
||||
|
||||
md->pages += nr_pages;
|
||||
if (pte_dirty || PageDirty(page))
|
||||
if (pte_dirty || folio_test_dirty(folio))
|
||||
md->dirty += nr_pages;
|
||||
|
||||
if (PageSwapCache(page))
|
||||
if (folio_test_swapcache(folio))
|
||||
md->swapcache += nr_pages;
|
||||
|
||||
if (PageActive(page) || PageUnevictable(page))
|
||||
if (folio_test_active(folio) || folio_test_unevictable(folio))
|
||||
md->active += nr_pages;
|
||||
|
||||
if (PageWriteback(page))
|
||||
if (folio_test_writeback(folio))
|
||||
md->writeback += nr_pages;
|
||||
|
||||
if (PageAnon(page))
|
||||
if (folio_test_anon(folio))
|
||||
md->anon += nr_pages;
|
||||
|
||||
if (count > md->mapcount_max)
|
||||
md->mapcount_max = count;
|
||||
|
||||
md->node[page_to_nid(page)] += nr_pages;
|
||||
md->node[folio_nid(folio)] += nr_pages;
|
||||
}
|
||||
|
||||
static struct page *can_gather_numa_stats(pte_t pte, struct vm_area_struct *vma,
|
||||
|
Loading…
x
Reference in New Issue
Block a user