Re: [PATCH v7 06/12] mm: multigenerational LRU: exploit locality in rmap
From: Yu Zhao <hidden>
Date: 2022-02-08 08:41:13
Also in:
linux-doc, linux-mm, lkml
On Tue, Feb 08, 2022 at 01:18:56AM -0700, Yu Zhao wrote: <snipped>
quoted hunk ↗ jump to hunk
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index b72d75141e12..51c9bc8e965d 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h@@ -436,6 +436,7 @@ static inline struct obj_cgroup *__folio_objcg(struct folio *folio) * - LRU isolation * - lock_page_memcg() * - exclusive reference + * - mem_cgroup_trylock_pages() * * For a kmem folio a caller should hold an rcu read lock to protect memcg * associated with a kmem folio from being released.@@ -497,6 +498,7 @@ static inline struct mem_cgroup *folio_memcg_rcu(struct folio *folio) * - LRU isolation * - lock_page_memcg() * - exclusive reference + * - mem_cgroup_trylock_pages() * * For a kmem page a caller should hold an rcu read lock to protect memcg * associated with a kmem page from being released.@@ -934,6 +936,23 @@ void unlock_page_memcg(struct page *page); void __mod_memcg_state(struct mem_cgroup *memcg, int idx, int val); +/* try to stablize folio_memcg() for all the pages in a memcg */ +static inline bool mem_cgroup_trylock_pages(struct mem_cgroup *memcg) +{ + rcu_read_lock(); + + if (mem_cgroup_disabled() || !atomic_read(&memcg->moving_account)) + return true; + + rcu_read_unlock(); + return false; +} + +static inline void mem_cgroup_unlock_pages(void) +{ + rcu_read_unlock(); +}
Replaced the open-coded folio_memcg() lock with a new function mem_cgroup_trylock_pages() as requested here: https://lore.kernel.org/linux-mm/YeATr%2F%2FU6XD87fWF@dhcp22.suse.cz/ (local) <snipped> _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel