]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
zsmalloc: introduce SG-list based object read API
authorSergey Senozhatsky <senozhatsky@chromium.org>
Tue, 13 Jan 2026 03:46:45 +0000 (12:46 +0900)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 27 Jan 2026 04:02:32 +0000 (20:02 -0800)
commitdc2e4982cb018306f0699cd460a9033467f07be5
treea426441fcedbd7cdd3258505fe4595b922cb878a
parent737dfe7d95263ae8e47e07a528e3676ffad6f59a
zsmalloc: introduce SG-list based object read API

Currently, zsmalloc performs address linearization on read (which
sometimes requires memcpy() to a local buffer).  Not all zsmalloc users
need a linear address.  For example, Crypto API supports SG-list,
performing linearization under the hood, if needed.  In addition, some
compressors can have native SG-list support, completely avoiding the
linearization step.

Provide an SG-list based zsmalloc read API:
- zs_obj_read_sg_begin()
- zs_obj_read_sg_end()

This API allows callers to obtain an SG representation of the object (one
entry for objects that are contained in a single page and two entries for
spanning objects), avoiding the need for a bounce buffer and memcpy.

[senozhatsky@chromium.org: make zs_obj_read_sg_begin() return void, per Yosry]
Link: https://lkml.kernel.org/r/20260117024900.792237-1-senozhatsky@chromium.org
Link: https://lkml.kernel.org/r/20260113034645.2729998-1-senozhatsky@chromium.org
Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org>
Acked-by: Herbert Xu <herbert@gondor.apana.org.au>
Tested-by: Yosry Ahmed <yosry.ahmed@linux.dev>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Brian Geffon <bgeffon@google.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Nhat Pham <nphamcs@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
include/linux/zsmalloc.h
mm/zsmalloc.c