Skip to content

Commit c701123

Browse files
Matthew Wilcox (Oracle)akpm00
authored andcommitted
mm/memcontrol: remove __mod_lruvec_page_state()
There are no more callers of __mod_lruvec_page_state(), so convert the implementation to __lruvec_stat_mod_folio(), removing two calls to compound_head() (one explicit, one hidden inside page_memcg()). Link: https://lkml.kernel.org/r/20231228085748.1083901-7-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Zi Yan <ziy@nvidia.com> Acked-by: Shakeel Butt <shakeelb@google.com> Reviewed-by: Vlastimil Babka <vbabka@suse.cz> Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent b54d60b commit c701123

2 files changed

Lines changed: 22 additions & 23 deletions

File tree

include/linux/vmstat.h

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -556,19 +556,25 @@ static inline void mod_lruvec_state(struct lruvec *lruvec,
556556
local_irq_restore(flags);
557557
}
558558

559-
void __mod_lruvec_page_state(struct page *page,
559+
void __lruvec_stat_mod_folio(struct folio *folio,
560560
enum node_stat_item idx, int val);
561561

562-
static inline void mod_lruvec_page_state(struct page *page,
562+
static inline void lruvec_stat_mod_folio(struct folio *folio,
563563
enum node_stat_item idx, int val)
564564
{
565565
unsigned long flags;
566566

567567
local_irq_save(flags);
568-
__mod_lruvec_page_state(page, idx, val);
568+
__lruvec_stat_mod_folio(folio, idx, val);
569569
local_irq_restore(flags);
570570
}
571571

572+
static inline void mod_lruvec_page_state(struct page *page,
573+
enum node_stat_item idx, int val)
574+
{
575+
lruvec_stat_mod_folio(page_folio(page), idx, val);
576+
}
577+
572578
#else
573579

574580
static inline void __mod_lruvec_state(struct lruvec *lruvec,
@@ -583,10 +589,16 @@ static inline void mod_lruvec_state(struct lruvec *lruvec,
583589
mod_node_page_state(lruvec_pgdat(lruvec), idx, val);
584590
}
585591

586-
static inline void __mod_lruvec_page_state(struct page *page,
587-
enum node_stat_item idx, int val)
592+
static inline void __lruvec_stat_mod_folio(struct folio *folio,
593+
enum node_stat_item idx, int val)
588594
{
589-
__mod_node_page_state(page_pgdat(page), idx, val);
595+
__mod_node_page_state(folio_pgdat(folio), idx, val);
596+
}
597+
598+
static inline void lruvec_stat_mod_folio(struct folio *folio,
599+
enum node_stat_item idx, int val)
600+
{
601+
mod_node_page_state(folio_pgdat(folio), idx, val);
590602
}
591603

592604
static inline void mod_lruvec_page_state(struct page *page,
@@ -597,12 +609,6 @@ static inline void mod_lruvec_page_state(struct page *page,
597609

598610
#endif /* CONFIG_MEMCG */
599611

600-
static inline void __lruvec_stat_mod_folio(struct folio *folio,
601-
enum node_stat_item idx, int val)
602-
{
603-
__mod_lruvec_page_state(&folio->page, idx, val);
604-
}
605-
606612
static inline void __lruvec_stat_add_folio(struct folio *folio,
607613
enum node_stat_item idx)
608614
{
@@ -615,12 +621,6 @@ static inline void __lruvec_stat_sub_folio(struct folio *folio,
615621
__lruvec_stat_mod_folio(folio, idx, -folio_nr_pages(folio));
616622
}
617623

618-
static inline void lruvec_stat_mod_folio(struct folio *folio,
619-
enum node_stat_item idx, int val)
620-
{
621-
mod_lruvec_page_state(&folio->page, idx, val);
622-
}
623-
624624
static inline void lruvec_stat_add_folio(struct folio *folio,
625625
enum node_stat_item idx)
626626
{

mm/memcontrol.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -890,16 +890,15 @@ void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx,
890890
__mod_memcg_lruvec_state(lruvec, idx, val);
891891
}
892892

893-
void __mod_lruvec_page_state(struct page *page, enum node_stat_item idx,
893+
void __lruvec_stat_mod_folio(struct folio *folio, enum node_stat_item idx,
894894
int val)
895895
{
896-
struct page *head = compound_head(page); /* rmap on tail pages */
897896
struct mem_cgroup *memcg;
898-
pg_data_t *pgdat = page_pgdat(page);
897+
pg_data_t *pgdat = folio_pgdat(folio);
899898
struct lruvec *lruvec;
900899

901900
rcu_read_lock();
902-
memcg = page_memcg(head);
901+
memcg = folio_memcg(folio);
903902
/* Untracked pages have no memcg, no lruvec. Update only the node */
904903
if (!memcg) {
905904
rcu_read_unlock();
@@ -911,7 +910,7 @@ void __mod_lruvec_page_state(struct page *page, enum node_stat_item idx,
911910
__mod_lruvec_state(lruvec, idx, val);
912911
rcu_read_unlock();
913912
}
914-
EXPORT_SYMBOL(__mod_lruvec_page_state);
913+
EXPORT_SYMBOL(__lruvec_stat_mod_folio);
915914

916915
void __mod_lruvec_kmem_state(void *p, enum node_stat_item idx, int val)
917916
{

0 commit comments

Comments
 (0)