mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 13:30:45 -05:00
mm: zpool: remove object mapping APIs
zpool_map_handle(), zpool_unmap_handle(), and zpool_can_sleep_mapped() are no longer used. Remove them with the underlying driver callbacks. Link: https://lkml.kernel.org/r/20250305061134.4105762-4-yosry.ahmed@linux.dev Signed-off-by: Yosry Ahmed <yosry.ahmed@linux.dev> Reviewed-by: Sergey Senozhatsky <senozhatsky@chromium.org> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Acked-by: Nhat Pham <nphamcs@gmail.com> Cc: Chengming Zhou <chengming.zhou@linux.dev> Cc: Herbert Xu <herbert@gondor.apana.org.au> Cc: Minchan Kim <minchan@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
7d4c9629b7
commit
fcbea57475
@@ -13,25 +13,6 @@
|
||||
|
||||
struct zpool;
|
||||
|
||||
/*
|
||||
* Control how a handle is mapped. It will be ignored if the
|
||||
* implementation does not support it. Its use is optional.
|
||||
* Note that this does not refer to memory protection, it
|
||||
* refers to how the memory will be copied in/out if copying
|
||||
* is necessary during mapping; read-write is the safest as
|
||||
* it copies the existing memory in on map, and copies the
|
||||
* changed memory back out on unmap. Write-only does not copy
|
||||
* in the memory and should only be used for initialization.
|
||||
* If in doubt, use ZPOOL_MM_DEFAULT which is read-write.
|
||||
*/
|
||||
enum zpool_mapmode {
|
||||
ZPOOL_MM_RW, /* normal read-write mapping */
|
||||
ZPOOL_MM_RO, /* read-only (no copy-out at unmap time) */
|
||||
ZPOOL_MM_WO, /* write-only (no copy-in at map time) */
|
||||
|
||||
ZPOOL_MM_DEFAULT = ZPOOL_MM_RW
|
||||
};
|
||||
|
||||
bool zpool_has_pool(char *type);
|
||||
|
||||
struct zpool *zpool_create_pool(const char *type, const char *name, gfp_t gfp);
|
||||
@@ -47,12 +28,6 @@ int zpool_malloc(struct zpool *pool, size_t size, gfp_t gfp,
|
||||
|
||||
void zpool_free(struct zpool *pool, unsigned long handle);
|
||||
|
||||
void *zpool_map_handle(struct zpool *pool, unsigned long handle,
|
||||
enum zpool_mapmode mm);
|
||||
|
||||
void zpool_unmap_handle(struct zpool *pool, unsigned long handle);
|
||||
|
||||
|
||||
void *zpool_obj_read_begin(struct zpool *zpool, unsigned long handle,
|
||||
void *local_copy);
|
||||
|
||||
@@ -95,11 +70,6 @@ struct zpool_driver {
|
||||
unsigned long *handle);
|
||||
void (*free)(void *pool, unsigned long handle);
|
||||
|
||||
bool sleep_mapped;
|
||||
void *(*map)(void *pool, unsigned long handle,
|
||||
enum zpool_mapmode mm);
|
||||
void (*unmap)(void *pool, unsigned long handle);
|
||||
|
||||
void *(*obj_read_begin)(void *pool, unsigned long handle,
|
||||
void *local_copy);
|
||||
void (*obj_read_end)(void *pool, unsigned long handle,
|
||||
|
||||
61
mm/zpool.c
61
mm/zpool.c
@@ -277,49 +277,6 @@ void zpool_free(struct zpool *zpool, unsigned long handle)
|
||||
zpool->driver->free(zpool->pool, handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* zpool_map_handle() - Map a previously allocated handle into memory
|
||||
* @zpool: The zpool that the handle was allocated from
|
||||
* @handle: The handle to map
|
||||
* @mapmode: How the memory should be mapped
|
||||
*
|
||||
* This maps a previously allocated handle into memory. The @mapmode
|
||||
* param indicates to the implementation how the memory will be
|
||||
* used, i.e. read-only, write-only, read-write. If the
|
||||
* implementation does not support it, the memory will be treated
|
||||
* as read-write.
|
||||
*
|
||||
* This may hold locks, disable interrupts, and/or preemption,
|
||||
* and the zpool_unmap_handle() must be called to undo those
|
||||
* actions. The code that uses the mapped handle should complete
|
||||
* its operations on the mapped handle memory quickly and unmap
|
||||
* as soon as possible. As the implementation may use per-cpu
|
||||
* data, multiple handles should not be mapped concurrently on
|
||||
* any cpu.
|
||||
*
|
||||
* Returns: A pointer to the handle's mapped memory area.
|
||||
*/
|
||||
void *zpool_map_handle(struct zpool *zpool, unsigned long handle,
|
||||
enum zpool_mapmode mapmode)
|
||||
{
|
||||
return zpool->driver->map(zpool->pool, handle, mapmode);
|
||||
}
|
||||
|
||||
/**
|
||||
* zpool_unmap_handle() - Unmap a previously mapped handle
|
||||
* @zpool: The zpool that the handle was allocated from
|
||||
* @handle: The handle to unmap
|
||||
*
|
||||
* This unmaps a previously mapped handle. Any locks or other
|
||||
* actions that the implementation took in zpool_map_handle()
|
||||
* will be undone here. The memory area returned from
|
||||
* zpool_map_handle() should no longer be used after this.
|
||||
*/
|
||||
void zpool_unmap_handle(struct zpool *zpool, unsigned long handle)
|
||||
{
|
||||
zpool->driver->unmap(zpool->pool, handle);
|
||||
}
|
||||
|
||||
/**
|
||||
* zpool_obj_read_begin() - Start reading from a previously allocated handle.
|
||||
* @zpool: The zpool that the handle was allocated from
|
||||
@@ -381,23 +338,5 @@ u64 zpool_get_total_pages(struct zpool *zpool)
|
||||
return zpool->driver->total_pages(zpool->pool);
|
||||
}
|
||||
|
||||
/**
|
||||
* zpool_can_sleep_mapped - Test if zpool can sleep when do mapped.
|
||||
* @zpool: The zpool to test
|
||||
*
|
||||
* Some allocators enter non-preemptible context in ->map() callback (e.g.
|
||||
* disable pagefaults) and exit that context in ->unmap(), which limits what
|
||||
* we can do with the mapped object. For instance, we cannot wait for
|
||||
* asynchronous crypto API to decompress such an object or take mutexes
|
||||
* since those will call into the scheduler. This function tells us whether
|
||||
* we use such an allocator.
|
||||
*
|
||||
* Returns: true if zpool can sleep; false otherwise.
|
||||
*/
|
||||
bool zpool_can_sleep_mapped(struct zpool *zpool)
|
||||
{
|
||||
return zpool->driver->sleep_mapped;
|
||||
}
|
||||
|
||||
MODULE_AUTHOR("Dan Streetman <ddstreet@ieee.org>");
|
||||
MODULE_DESCRIPTION("Common API for compressed memory storage");
|
||||
|
||||
@@ -482,31 +482,6 @@ static void zs_zpool_free(void *pool, unsigned long handle)
|
||||
zs_free(pool, handle);
|
||||
}
|
||||
|
||||
static void *zs_zpool_map(void *pool, unsigned long handle,
|
||||
enum zpool_mapmode mm)
|
||||
{
|
||||
enum zs_mapmode zs_mm;
|
||||
|
||||
switch (mm) {
|
||||
case ZPOOL_MM_RO:
|
||||
zs_mm = ZS_MM_RO;
|
||||
break;
|
||||
case ZPOOL_MM_WO:
|
||||
zs_mm = ZS_MM_WO;
|
||||
break;
|
||||
case ZPOOL_MM_RW:
|
||||
default:
|
||||
zs_mm = ZS_MM_RW;
|
||||
break;
|
||||
}
|
||||
|
||||
return zs_map_object(pool, handle, zs_mm);
|
||||
}
|
||||
static void zs_zpool_unmap(void *pool, unsigned long handle)
|
||||
{
|
||||
zs_unmap_object(pool, handle);
|
||||
}
|
||||
|
||||
static void *zs_zpool_obj_read_begin(void *pool, unsigned long handle,
|
||||
void *local_copy)
|
||||
{
|
||||
@@ -538,8 +513,6 @@ static struct zpool_driver zs_zpool_driver = {
|
||||
.malloc_support_movable = true,
|
||||
.malloc = zs_zpool_malloc,
|
||||
.free = zs_zpool_free,
|
||||
.map = zs_zpool_map,
|
||||
.unmap = zs_zpool_unmap,
|
||||
.obj_read_begin = zs_zpool_obj_read_begin,
|
||||
.obj_read_end = zs_zpool_obj_read_end,
|
||||
.obj_write = zs_zpool_obj_write,
|
||||
|
||||
Reference in New Issue
Block a user