staging: lustre: libcfs: simplify memory allocation.

1/ Use kvmalloc() instead of kmalloc or vmalloc
2/ Discard the _GFP() interfaces that are never used.
  We only ever do GFP_NOFS and GFP_ATOMIC allocations,
  so support each of those explicitly.

Signed-off-by: NeilBrown <neilb@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
NeilBrown 2017-12-13 14:15:55 +11:00 коммит произвёл Greg Kroah-Hartman
Родитель 47d59e75e9
Коммит 8b299a5232
1 изменённых файлов: 12 добавлений и 30 удалений

Просмотреть файл

@ -84,14 +84,6 @@ do { \
lbug_with_loc(&msgdata); \
} while (0)
#ifndef LIBCFS_VMALLOC_SIZE
#define LIBCFS_VMALLOC_SIZE (2 << PAGE_SHIFT) /* 2 pages */
#endif
#define LIBCFS_ALLOC_PRE(size, mask) \
LASSERT(!in_interrupt() || ((size) <= LIBCFS_VMALLOC_SIZE && \
!gfpflags_allow_blocking(mask)))
#define LIBCFS_ALLOC_POST(ptr, size) \
do { \
if (unlikely(!(ptr))) { \
@ -103,46 +95,36 @@ do { \
} while (0)
/**
* allocate memory with GFP flags @mask
* default allocator
*/
#define LIBCFS_ALLOC_GFP(ptr, size, mask) \
#define LIBCFS_ALLOC(ptr, size) \
do { \
LIBCFS_ALLOC_PRE((size), (mask)); \
(ptr) = (size) <= LIBCFS_VMALLOC_SIZE ? \
kmalloc((size), (mask)) : vmalloc(size); \
LASSERT(!in_interrupt()); \
(ptr) = kvmalloc((size), GFP_NOFS); \
LIBCFS_ALLOC_POST((ptr), (size)); \
} while (0)
/**
* default allocator
*/
#define LIBCFS_ALLOC(ptr, size) \
LIBCFS_ALLOC_GFP(ptr, size, GFP_NOFS)
/**
* non-sleeping allocator
*/
#define LIBCFS_ALLOC_ATOMIC(ptr, size) \
LIBCFS_ALLOC_GFP(ptr, size, GFP_ATOMIC)
#define LIBCFS_ALLOC_ATOMIC(ptr, size) \
do { \
(ptr) = kmalloc((size), GFP_ATOMIC); \
LIBCFS_ALLOC_POST(ptr, size); \
} while (0)
/**
* allocate memory for specified CPU partition
* \a cptab != NULL, \a cpt is CPU partition id of \a cptab
* \a cptab == NULL, \a cpt is HW NUMA node id
*/
#define LIBCFS_CPT_ALLOC_GFP(ptr, cptab, cpt, size, mask) \
#define LIBCFS_CPT_ALLOC(ptr, cptab, cpt, size) \
do { \
LIBCFS_ALLOC_PRE((size), (mask)); \
(ptr) = (size) <= LIBCFS_VMALLOC_SIZE ? \
kmalloc_node((size), (mask), cfs_cpt_spread_node(cptab, cpt)) :\
vmalloc_node(size, cfs_cpt_spread_node(cptab, cpt)); \
LASSERT(!in_interrupt()); \
(ptr) = kvmalloc_node((size), GFP_NOFS, cfs_cpt_spread_node(cptab, cpt)); \
LIBCFS_ALLOC_POST((ptr), (size)); \
} while (0)
/** default numa allocator */
#define LIBCFS_CPT_ALLOC(ptr, cptab, cpt, size) \
LIBCFS_CPT_ALLOC_GFP(ptr, cptab, cpt, size, GFP_NOFS)
#define LIBCFS_FREE(ptr, size) \
do { \
if (unlikely(!(ptr))) { \