Lines Matching refs:lruvec
37 static __always_inline void __update_lru_size(struct lruvec *lruvec,
41 struct pglist_data *pgdat = lruvec_pgdat(lruvec);
43 lockdep_assert_held(&lruvec->lru_lock);
46 __mod_lruvec_state(lruvec, NR_LRU_BASE + lru, nr_pages);
51 static __always_inline void update_lru_size(struct lruvec *lruvec,
55 __update_lru_size(lruvec, lru, zid, nr_pages);
57 mem_cgroup_update_lru_size(lruvec, lru, zid, nr_pages);
168 static inline bool lru_gen_is_active(struct lruvec *lruvec, int gen)
170 unsigned long max_seq = lruvec->lrugen.max_seq;
178 static inline void lru_gen_update_size(struct lruvec *lruvec, struct folio *folio,
185 struct lru_gen_folio *lrugen = &lruvec->lrugen;
200 if (lru_gen_is_active(lruvec, new_gen))
202 __update_lru_size(lruvec, lru, zone, delta);
208 if (lru_gen_is_active(lruvec, old_gen))
210 __update_lru_size(lruvec, lru, zone, -delta);
215 if (!lru_gen_is_active(lruvec, old_gen) && lru_gen_is_active(lruvec, new_gen)) {
216 __update_lru_size(lruvec, lru, zone, -delta);
217 __update_lru_size(lruvec, lru + LRU_ACTIVE, zone, delta);
221 VM_WARN_ON_ONCE(lru_gen_is_active(lruvec, old_gen) && !lru_gen_is_active(lruvec, new_gen));
224 static inline bool lru_gen_add_folio(struct lruvec *lruvec, struct folio *folio, bool reclaiming)
231 struct lru_gen_folio *lrugen = &lruvec->lrugen;
265 lru_gen_update_size(lruvec, folio, -1, gen);
275 static inline bool lru_gen_del_folio(struct lruvec *lruvec, struct folio *folio, bool reclaiming)
287 flags = !reclaiming && lru_gen_is_active(lruvec, gen) ? BIT(PG_active) : 0;
291 lru_gen_update_size(lruvec, folio, gen, -1);
309 static inline bool lru_gen_add_folio(struct lruvec *lruvec, struct folio *folio, bool reclaiming)
314 static inline bool lru_gen_del_folio(struct lruvec *lruvec, struct folio *folio, bool reclaiming)
322 void lruvec_add_folio(struct lruvec *lruvec, struct folio *folio)
326 if (lru_gen_add_folio(lruvec, folio, false))
329 update_lru_size(lruvec, lru, folio_zonenum(folio),
332 list_add(&folio->lru, &lruvec->lists[lru]);
336 void lruvec_add_folio_tail(struct lruvec *lruvec, struct folio *folio)
340 if (lru_gen_add_folio(lruvec, folio, true))
343 update_lru_size(lruvec, lru, folio_zonenum(folio),
346 list_add_tail(&folio->lru, &lruvec->lists[lru]);
350 void lruvec_del_folio(struct lruvec *lruvec, struct folio *folio)
354 if (lru_gen_del_folio(lruvec, folio, false))
359 update_lru_size(lruvec, lru, folio_zonenum(folio),