From: Minchan Kim <minchan@kernel.org>
To: Nhat Pham <nphamcs@gmail.com>
Cc: akpm@linux-foundation.org, hannes@cmpxchg.org,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
ngupta@vflare.org, senozhatsky@chromium.org, sjenning@redhat.com,
ddstreet@ieee.org, vitaly.wool@konsulko.com
Subject: Re: [PATCH v4 4/5] zsmalloc: Add ops fields to zs_pool to store evict handlers
Date: Thu, 17 Nov 2022 14:25:52 -0800 [thread overview]
Message-ID: <Y3a08ElhlyLN+0rG@google.com> (raw)
In-Reply-To: <20221117163839.230900-5-nphamcs@gmail.com>
On Thu, Nov 17, 2022 at 08:38:38AM -0800, Nhat Pham wrote:
> This adds fields to zs_pool to store evict handlers for writeback,
> analogous to the zbud allocator.
>
> Signed-off-by: Nhat Pham <nphamcs@gmail.com>
> ---
> mm/zsmalloc.c | 35 ++++++++++++++++++++++++++++++++++-
> 1 file changed, 34 insertions(+), 1 deletion(-)
>
> diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
> index 2557b55ec767..776d0e15a401 100644
> --- a/mm/zsmalloc.c
> +++ b/mm/zsmalloc.c
> @@ -225,6 +225,12 @@ struct link_free {
> };
> };
>
> +struct zs_pool;
> +
> +struct zs_ops {
> + int (*evict)(struct zs_pool *pool, unsigned long handle);
> +};
> +
> struct zs_pool {
> const char *name;
>
> @@ -242,6 +248,9 @@ struct zs_pool {
> #ifdef CONFIG_ZPOOL
> /* List tracking the zspages in LRU order by most recently added object */
> struct list_head lru;
> + const struct zs_ops *ops;
> + struct zpool *zpool;
> + const struct zpool_ops *zpool_ops;
> #endif
>
> #ifdef CONFIG_ZSMALLOC_STAT
> @@ -385,6 +394,18 @@ static void record_obj(unsigned long handle, unsigned long obj)
>
> #ifdef CONFIG_ZPOOL
>
> +static int zs_zpool_evict(struct zs_pool *pool, unsigned long handle)
> +{
> + if (pool->zpool && pool->zpool_ops && pool->zpool_ops->evict)
> + return pool->zpool_ops->evict(pool->zpool, handle);
> + else
> + return -ENOENT;
> +}
> +
> +static const struct zs_ops zs_zpool_ops = {
> + .evict = zs_zpool_evict
> +};
> +
> static void *zs_zpool_create(const char *name, gfp_t gfp,
> const struct zpool_ops *zpool_ops,
> struct zpool *zpool)
> @@ -394,7 +415,19 @@ static void *zs_zpool_create(const char *name, gfp_t gfp,
> * different contexts and its caller must provide a valid
> * gfp mask.
> */
> - return zs_create_pool(name);
> + struct zs_pool *pool = zs_create_pool(name);
> +
> + if (pool) {
> + pool->zpool = zpool;
> + pool->zpool_ops = zpool_ops;
> +
> + if (zpool_ops)
I lost. When do we have zpool_ops as NULL?
next prev parent reply other threads:[~2022-11-17 22:25 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-17 16:38 [PATCH v4 0/5] Implement writeback for zsmalloc Nhat Pham
2022-11-17 16:38 ` [PATCH v4 1/5] zswap: fix writeback lock ordering " Nhat Pham
2022-11-17 16:38 ` [PATCH v4 2/5] zsmalloc: Consolidate zs_pool's migrate_lock and size_class's locks Nhat Pham
2022-11-17 22:02 ` Minchan Kim
2022-11-17 16:38 ` [PATCH v4 3/5] zsmalloc: Add a LRU to zs_pool to keep track of zspages in LRU order Nhat Pham
2022-11-17 22:15 ` Minchan Kim
2022-11-18 4:30 ` Johannes Weiner
2022-11-18 19:24 ` Minchan Kim
2022-11-18 19:54 ` Johannes Weiner
2022-11-17 16:38 ` [PATCH v4 4/5] zsmalloc: Add ops fields to zs_pool to store evict handlers Nhat Pham
2022-11-17 22:25 ` Minchan Kim [this message]
2022-11-18 5:15 ` Johannes Weiner
2022-11-18 5:52 ` Johannes Weiner
2022-11-17 16:38 ` [PATCH v4 5/5] zsmalloc: Implement writeback mechanism for zsmalloc Nhat Pham
2022-11-17 22:48 ` Minchan Kim
2022-11-18 5:24 ` Johannes Weiner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y3a08ElhlyLN+0rG@google.com \
--to=minchan@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=ddstreet@ieee.org \
--cc=hannes@cmpxchg.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ngupta@vflare.org \
--cc=nphamcs@gmail.com \
--cc=senozhatsky@chromium.org \
--cc=sjenning@redhat.com \
--cc=vitaly.wool@konsulko.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.