summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Senozhatsky <senozhatsky@chromium.org>2026-09-07 19:57:29 +0900
committerAndrew Morton <akpm@linux-foundation.org>2026-10-08 22:54:58 -0700
commit7ade67b8d5b4792db0efa623b12b613255b4624a (patch)
treee524156952aa887e6438138c8617a8918fa24dd9
parent803f6a03f243ef544d8a9fe6c9314247b34cf02b (diff)
downloadlinux-next-7ade67b8d5b4792db0efa623b12b613255b4624a.tar.gz
linux-next-7ade67b8d5b4792db0efa623b12b613255b4624a.zip
zsmalloc: remove old object read API
There are no users left of the old API, all have switched to SG-list object read API. Remove it. Link: https://lore.kernel.org/20260907105739.1793316-3-senozhatsky@chromium.org Signed-off-by: Sergey Senozhatsky <senozhatsky@chromium.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Cc: Minchan Kim <minchan@kernel.org> Cc: Nhat Pham <nphamcs@gmail.com>
-rw-r--r--include/linux/zsmalloc.h4
-rw-r--r--mm/zsmalloc.c77
2 files changed, 0 insertions, 81 deletions
diff --git a/include/linux/zsmalloc.h b/include/linux/zsmalloc.h
index 478410c880b1..5b7298a5026b 100644
--- a/include/linux/zsmalloc.h
+++ b/include/linux/zsmalloc.h
@@ -40,10 +40,6 @@ unsigned int zs_lookup_class_index(struct zs_pool *pool, unsigned int size);
void zs_pool_stats(struct zs_pool *pool, struct zs_pool_stats *stats);
-void *zs_obj_read_begin(struct zs_pool *pool, unsigned long handle,
- size_t mem_len, void *local_copy);
-void zs_obj_read_end(struct zs_pool *pool, unsigned long handle,
- size_t mem_len, void *handle_mem);
void zs_obj_read_sg_begin(struct zs_pool *pool, unsigned long handle,
struct scatterlist *sg, size_t mem_len);
void zs_obj_read_sg_end(struct zs_pool *pool, unsigned long handle);
diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
index 825022a7a328..11be37c43171 100644
--- a/mm/zsmalloc.c
+++ b/mm/zsmalloc.c
@@ -1134,83 +1134,6 @@ unsigned long zs_get_total_pages(struct zs_pool *pool)
}
EXPORT_SYMBOL_GPL(zs_get_total_pages);
-void *zs_obj_read_begin(struct zs_pool *pool, unsigned long handle,
- size_t mem_len, void *local_copy)
-{
- struct zspage *zspage;
- struct zpdesc *zpdesc;
- unsigned long obj, off;
- unsigned int obj_idx;
- struct size_class *class;
- void *addr;
-
- /* Guarantee we can get zspage from handle safely */
- read_lock(&pool->lock);
- obj = handle_to_obj(handle);
- obj_to_location(obj, &zpdesc, &obj_idx);
- zspage = get_zspage(zpdesc);
-
- /* Make sure migration doesn't move any pages in this zspage */
- zspage_read_lock(zspage);
- read_unlock(&pool->lock);
-
- class = zspage_class(pool, zspage);
- off = offset_in_page(class->size * obj_idx);
-
- if (!ZsHugePage(zspage))
- off += ZS_HANDLE_SIZE;
-
- if (off + mem_len <= PAGE_SIZE) {
- /* this object is contained entirely within a page */
- addr = kmap_local_zpdesc(zpdesc);
- addr += off;
- } else {
- size_t sizes[2];
-
- /* this object spans two pages */
- sizes[0] = PAGE_SIZE - off;
- sizes[1] = mem_len - sizes[0];
- addr = local_copy;
-
- memcpy_from_page(addr, zpdesc_page(zpdesc),
- off, sizes[0]);
- zpdesc = get_next_zpdesc(zpdesc);
- memcpy_from_page(addr + sizes[0],
- zpdesc_page(zpdesc),
- 0, sizes[1]);
- }
-
- return addr;
-}
-EXPORT_SYMBOL_GPL(zs_obj_read_begin);
-
-void zs_obj_read_end(struct zs_pool *pool, unsigned long handle,
- size_t mem_len, void *handle_mem)
-{
- struct zspage *zspage;
- struct zpdesc *zpdesc;
- unsigned long obj, off;
- unsigned int obj_idx;
- struct size_class *class;
-
- obj = handle_to_obj(handle);
- obj_to_location(obj, &zpdesc, &obj_idx);
- zspage = get_zspage(zpdesc);
- class = zspage_class(pool, zspage);
- off = offset_in_page(class->size * obj_idx);
-
- if (!ZsHugePage(zspage))
- off += ZS_HANDLE_SIZE;
-
- if (off + mem_len <= PAGE_SIZE) {
- handle_mem -= off;
- kunmap_local(handle_mem);
- }
-
- zspage_read_unlock(zspage);
-}
-EXPORT_SYMBOL_GPL(zs_obj_read_end);
-
void zs_obj_read_sg_begin(struct zs_pool *pool, unsigned long handle,
struct scatterlist *sg, size_t mem_len)
{