Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c165f25d authored by Hui Zhu's avatar Hui Zhu Committed by Linus Torvalds
Browse files

zpool: add malloc_support_movable to zpool_driver

As a zpool_driver, zsmalloc can allocate movable memory because it support
migate pages.  But zbud and z3fold cannot allocate movable memory.

Add malloc_support_movable to zpool_driver.  If a zpool_driver support
allocate movable memory, set it to true.  And add
zpool_malloc_support_movable check malloc_support_movable to make sure if
a zpool support allocate movable memory.

Link: http://lkml.kernel.org/r/20190605100630.13293-1-teawaterz@linux.alibaba.com


Signed-off-by: default avatarHui Zhu <teawaterz@linux.alibaba.com>
Reviewed-by: default avatarShakeel Butt <shakeelb@google.com>
Cc: Dan Streetman <ddstreet@ieee.org>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Nitin Gupta <ngupta@vflare.org>
Cc: Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com>
Cc: Seth Jennings <sjenning@redhat.com>
Cc: Vitaly Wool <vitalywool@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 28eb3c80
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -46,6 +46,8 @@ const char *zpool_get_type(struct zpool *pool);

void zpool_destroy_pool(struct zpool *pool);

bool zpool_malloc_support_movable(struct zpool *pool);

int zpool_malloc(struct zpool *pool, size_t size, gfp_t gfp,
			unsigned long *handle);

@@ -90,6 +92,7 @@ struct zpool_driver {
			struct zpool *zpool);
	void (*destroy)(void *pool);

	bool malloc_support_movable;
	int (*malloc)(void *pool, size_t size, gfp_t gfp,
				unsigned long *handle);
	void (*free)(void *pool, unsigned long handle);
+16 −0
Original line number Diff line number Diff line
@@ -238,6 +238,22 @@ const char *zpool_get_type(struct zpool *zpool)
	return zpool->driver->type;
}

/**
 * zpool_malloc_support_movable() - Check if the zpool support
 * allocate movable memory
 * @zpool:	The zpool to check
 *
 * This returns if the zpool support allocate movable memory.
 *
 * Implementations must guarantee this to be thread-safe.
 *
 * Returns: true if if the zpool support allocate movable memory, false if not
 */
bool zpool_malloc_support_movable(struct zpool *zpool)
{
	return zpool->driver->malloc_support_movable;
}

/**
 * zpool_malloc() - Allocate memory
 * @zpool:	The zpool to allocate from.
+10 −9
Original line number Diff line number Diff line
@@ -447,6 +447,7 @@ static struct zpool_driver zs_zpool_driver = {
	.owner =		  THIS_MODULE,
	.create =		  zs_zpool_create,
	.destroy =		  zs_zpool_destroy,
	.malloc_support_movable = true,
	.malloc =		  zs_zpool_malloc,
	.free =			  zs_zpool_free,
	.map =			  zs_zpool_map,