mempool: kvmalloc pool
Add mempool_init_kvmalloc_pool() and mempool_create_kvmalloc_pool(), which wrap kvmalloc() instead of kmalloc() - kmalloc() with a vmalloc() fallback. This is part of a bcachefs cleanup - dropping an internal kvpmalloc() helper (which predates kvmalloc()) along with mempool helpers; this replaces the bcachefs-private kvpmalloc_pool. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev> Cc: linux-mm@kvack.org
This commit is contained in:
parent
737cd174d1
commit
0225bdfafd
|
@ -95,6 +95,19 @@ static inline mempool_t *mempool_create_kmalloc_pool(int min_nr, size_t size)
|
||||||
(void *) size);
|
(void *) size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *mempool_kvmalloc(gfp_t gfp_mask, void *pool_data);
|
||||||
|
void mempool_kvfree(void *element, void *pool_data);
|
||||||
|
|
||||||
|
static inline int mempool_init_kvmalloc_pool(mempool_t *pool, int min_nr, size_t size)
|
||||||
|
{
|
||||||
|
return mempool_init(pool, min_nr, mempool_kvmalloc, mempool_kvfree, (void *) size);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline mempool_t *mempool_create_kvmalloc_pool(int min_nr, size_t size)
|
||||||
|
{
|
||||||
|
return mempool_create(min_nr, mempool_kvmalloc, mempool_kvfree, (void *) size);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A mempool_alloc_t and mempool_free_t for a simple page allocator that
|
* A mempool_alloc_t and mempool_free_t for a simple page allocator that
|
||||||
* allocates pages of the order specified by pool_data
|
* allocates pages of the order specified by pool_data
|
||||||
|
|
13
mm/mempool.c
13
mm/mempool.c
|
@ -590,6 +590,19 @@ void mempool_kfree(void *element, void *pool_data)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(mempool_kfree);
|
EXPORT_SYMBOL(mempool_kfree);
|
||||||
|
|
||||||
|
void *mempool_kvmalloc(gfp_t gfp_mask, void *pool_data)
|
||||||
|
{
|
||||||
|
size_t size = (size_t)pool_data;
|
||||||
|
return kvmalloc(size, gfp_mask);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(mempool_kvmalloc);
|
||||||
|
|
||||||
|
void mempool_kvfree(void *element, void *pool_data)
|
||||||
|
{
|
||||||
|
kvfree(element);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(mempool_kvfree);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A simple mempool-backed page allocator that allocates pages
|
* A simple mempool-backed page allocator that allocates pages
|
||||||
* of the order specified by pool_data.
|
* of the order specified by pool_data.
|
||||||
|
|
Loading…
Reference in New Issue