Re: [PATCH 15/20] mm: zswap: function ordering: move entry sections out of LRU section

From: Nhat Pham
Date: Tue Jan 30 2024 - 18:48:37 EST


On Mon, Jan 29, 2024 at 5:42 PM Johannes Weiner <hannes@xxxxxxxxxxx> wrote:
>
> This completes consolidation of the LRU section.
>
> Signed-off-by: Johannes Weiner <hannes@xxxxxxxxxxx>

LGTM.
Reviewed-by: Nhat Pham <nphamcs@xxxxxxxxx>

> ---
> mm/zswap.c | 101 ++++++++++++++++++++++++++---------------------------
> 1 file changed, 49 insertions(+), 52 deletions(-)
>
> diff --git a/mm/zswap.c b/mm/zswap.c
> index 511bfafc1456..756d4d575efe 100644
> --- a/mm/zswap.c
> +++ b/mm/zswap.c
> @@ -768,58 +768,6 @@ static inline int entry_to_nid(struct zswap_entry *entry)
> return page_to_nid(virt_to_page(entry));
> }
>
> -void zswap_lruvec_state_init(struct lruvec *lruvec)
> -{
> - atomic_long_set(&lruvec->zswap_lruvec_state.nr_zswap_protected, 0);
> -}
> -
> -void zswap_folio_swapin(struct folio *folio)
> -{
> - struct lruvec *lruvec;
> -
> - if (folio) {
> - lruvec = folio_lruvec(folio);
> - atomic_long_inc(&lruvec->zswap_lruvec_state.nr_zswap_protected);
> - }
> -}
> -
> -void zswap_memcg_offline_cleanup(struct mem_cgroup *memcg)
> -{
> - struct zswap_pool *pool;
> -
> - /* lock out zswap pools list modification */
> - spin_lock(&zswap_pools_lock);
> - list_for_each_entry(pool, &zswap_pools, list) {
> - if (pool->next_shrink == memcg)
> - pool->next_shrink = mem_cgroup_iter(NULL, pool->next_shrink, NULL);
> - }
> - spin_unlock(&zswap_pools_lock);
> -}
> -
> -/*********************************
> -* zswap entry functions
> -**********************************/
> -static struct kmem_cache *zswap_entry_cache;
> -
> -static struct zswap_entry *zswap_entry_cache_alloc(gfp_t gfp, int nid)
> -{
> - struct zswap_entry *entry;
> - entry = kmem_cache_alloc_node(zswap_entry_cache, gfp, nid);
> - if (!entry)
> - return NULL;
> - entry->refcount = 1;
> - RB_CLEAR_NODE(&entry->rbnode);
> - return entry;
> -}
> -
> -static void zswap_entry_cache_free(struct zswap_entry *entry)
> -{
> - kmem_cache_free(zswap_entry_cache, entry);
> -}
> -
> -/*********************************
> -* lru functions
> -**********************************/
> static void zswap_lru_add(struct list_lru *list_lru, struct zswap_entry *entry)
> {
> atomic_long_t *nr_zswap_protected;
> @@ -872,6 +820,55 @@ static void zswap_lru_del(struct list_lru *list_lru, struct zswap_entry *entry)
> rcu_read_unlock();
> }
>
> +void zswap_lruvec_state_init(struct lruvec *lruvec)
> +{
> + atomic_long_set(&lruvec->zswap_lruvec_state.nr_zswap_protected, 0);
> +}
> +
> +void zswap_folio_swapin(struct folio *folio)
> +{
> + struct lruvec *lruvec;
> +
> + if (folio) {
> + lruvec = folio_lruvec(folio);
> + atomic_long_inc(&lruvec->zswap_lruvec_state.nr_zswap_protected);
> + }
> +}
> +
> +void zswap_memcg_offline_cleanup(struct mem_cgroup *memcg)
> +{
> + struct zswap_pool *pool;
> +
> + /* lock out zswap pools list modification */
> + spin_lock(&zswap_pools_lock);
> + list_for_each_entry(pool, &zswap_pools, list) {
> + if (pool->next_shrink == memcg)
> + pool->next_shrink = mem_cgroup_iter(NULL, pool->next_shrink, NULL);
> + }
> + spin_unlock(&zswap_pools_lock);
> +}
> +
> +/*********************************
> +* zswap entry functions
> +**********************************/
> +static struct kmem_cache *zswap_entry_cache;
> +
> +static struct zswap_entry *zswap_entry_cache_alloc(gfp_t gfp, int nid)
> +{
> + struct zswap_entry *entry;
> + entry = kmem_cache_alloc_node(zswap_entry_cache, gfp, nid);
> + if (!entry)
> + return NULL;
> + entry->refcount = 1;
> + RB_CLEAR_NODE(&entry->rbnode);
> + return entry;
> +}
> +
> +static void zswap_entry_cache_free(struct zswap_entry *entry)
> +{
> + kmem_cache_free(zswap_entry_cache, entry);
> +}
> +
> /*********************************
> * rbtree functions
> **********************************/
> --
> 2.43.0
>