* [PATCH V3 01/27] kfifo: add kfifo_alloc_node() helper for NUMA awareness [not found] <20251112093808.2134129-1-ming.lei@redhat.com> @ 2025-11-12 9:37 ` Ming Lei 2025-11-12 19:29 ` Andrew Morton 2025-11-15 4:14 ` Caleb Sander Mateos 0 siblings, 2 replies; 6+ messages in thread From: Ming Lei @ 2025-11-12 9:37 UTC (permalink / raw) To: Jens Axboe, linux-block Cc: Caleb Sander Mateos, Uday Shankar, Ming Lei, Stefani Seibold, Andrew Morton, linux-kernel Add __kfifo_alloc_node() by refactoring and reusing __kfifo_alloc(), and define kfifo_alloc_node() macro to support NUMA-aware memory allocation. The new __kfifo_alloc_node() function accepts a NUMA node parameter and uses kmalloc_array_node() instead of kmalloc_array() for node-specific allocation. The existing __kfifo_alloc() now calls __kfifo_alloc_node() with NUMA_NO_NODE to maintain backward compatibility. This enables users to allocate kfifo buffers on specific NUMA nodes, which is important for performance in NUMA systems where the kfifo will be primarily accessed by threads running on specific nodes. Cc: Stefani Seibold <stefani@seibold.net> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: linux-kernel@vger.kernel.org Signed-off-by: Ming Lei <ming.lei@redhat.com> --- include/linux/kfifo.h | 27 +++++++++++++++++++++++++++ lib/kfifo.c | 13 ++++++++++--- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/include/linux/kfifo.h b/include/linux/kfifo.h index fd743d4c4b4b..61d1fe014a6c 100644 --- a/include/linux/kfifo.h +++ b/include/linux/kfifo.h @@ -369,6 +369,30 @@ __kfifo_int_must_check_helper( \ }) \ ) +/** + * kfifo_alloc_node - dynamically allocates a new fifo buffer on a NUMA node + * @fifo: pointer to the fifo + * @size: the number of elements in the fifo, this must be a power of 2 + * @gfp_mask: get_free_pages mask, passed to kmalloc() + * @node: NUMA node to allocate memory on + * + * This macro dynamically allocates a new fifo buffer with NUMA node awareness. + * + * The number of elements will be rounded-up to a power of 2. + * The fifo will be release with kfifo_free(). + * Return 0 if no error, otherwise an error code. + */ +#define kfifo_alloc_node(fifo, size, gfp_mask, node) \ +__kfifo_int_must_check_helper( \ +({ \ + typeof((fifo) + 1) __tmp = (fifo); \ + struct __kfifo *__kfifo = &__tmp->kfifo; \ + __is_kfifo_ptr(__tmp) ? \ + __kfifo_alloc_node(__kfifo, size, sizeof(*__tmp->type), gfp_mask, node) : \ + -EINVAL; \ +}) \ +) + /** * kfifo_free - frees the fifo * @fifo: the fifo to be freed @@ -902,6 +926,9 @@ __kfifo_uint_must_check_helper( \ extern int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, size_t esize, gfp_t gfp_mask); +extern int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, + size_t esize, gfp_t gfp_mask, int node); + extern void __kfifo_free(struct __kfifo *fifo); extern int __kfifo_init(struct __kfifo *fifo, void *buffer, diff --git a/lib/kfifo.c b/lib/kfifo.c index a8b2eed90599..195cf0feecc2 100644 --- a/lib/kfifo.c +++ b/lib/kfifo.c @@ -22,8 +22,8 @@ static inline unsigned int kfifo_unused(struct __kfifo *fifo) return (fifo->mask + 1) - (fifo->in - fifo->out); } -int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, - size_t esize, gfp_t gfp_mask) +int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, + size_t esize, gfp_t gfp_mask, int node) { /* * round up to the next power of 2, since our 'let the indices @@ -41,7 +41,7 @@ int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, return -EINVAL; } - fifo->data = kmalloc_array(esize, size, gfp_mask); + fifo->data = kmalloc_array_node(esize, size, gfp_mask, node); if (!fifo->data) { fifo->mask = 0; @@ -51,6 +51,13 @@ int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, return 0; } +EXPORT_SYMBOL(__kfifo_alloc_node); + +int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, + size_t esize, gfp_t gfp_mask) +{ + return __kfifo_alloc_node(fifo, size, esize, gfp_mask, NUMA_NO_NODE); +} EXPORT_SYMBOL(__kfifo_alloc); void __kfifo_free(struct __kfifo *fifo) -- 2.47.0 ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V3 01/27] kfifo: add kfifo_alloc_node() helper for NUMA awareness 2025-11-12 9:37 ` [PATCH V3 01/27] kfifo: add kfifo_alloc_node() helper for NUMA awareness Ming Lei @ 2025-11-12 19:29 ` Andrew Morton 2025-11-13 1:21 ` Ming Lei 2025-11-15 4:14 ` Caleb Sander Mateos 1 sibling, 1 reply; 6+ messages in thread From: Andrew Morton @ 2025-11-12 19:29 UTC (permalink / raw) To: Ming Lei Cc: Jens Axboe, linux-block, Caleb Sander Mateos, Uday Shankar, Stefani Seibold, linux-kernel On Wed, 12 Nov 2025 17:37:39 +0800 Ming Lei <ming.lei@redhat.com> wrote: > Add __kfifo_alloc_node() by refactoring and reusing __kfifo_alloc(), > and define kfifo_alloc_node() macro to support NUMA-aware memory > allocation. > > The new __kfifo_alloc_node() function accepts a NUMA node parameter > and uses kmalloc_array_node() instead of kmalloc_array() for > node-specific allocation. The existing __kfifo_alloc() now calls > __kfifo_alloc_node() with NUMA_NO_NODE to maintain backward > compatibility. > > This enables users to allocate kfifo buffers on specific NUMA nodes, > which is important for performance in NUMA systems where the kfifo > will be primarily accessed by threads running on specific nodes. I was about to ask "please don't add infrastructure without users", but I see a "01/27" there. I wander over to lkml but I can't find 02-27 there either. Maybe something went wrong. I prefer to be cc'ed on the entire series, please. > --- a/include/linux/kfifo.h > +++ b/include/linux/kfifo.h > @@ -369,6 +369,30 @@ __kfifo_int_must_check_helper( \ > }) \ > ) > > +/** > + * kfifo_alloc_node - dynamically allocates a new fifo buffer on a NUMA node > + * @fifo: pointer to the fifo > + * @size: the number of elements in the fifo, this must be a power of 2 > + * @gfp_mask: get_free_pages mask, passed to kmalloc() > + * @node: NUMA node to allocate memory on > + * > + * This macro dynamically allocates a new fifo buffer with NUMA node awareness. > + * > + * The number of elements will be rounded-up to a power of 2. > + * The fifo will be release with kfifo_free(). > + * Return 0 if no error, otherwise an error code. > + */ > +#define kfifo_alloc_node(fifo, size, gfp_mask, node) \ > +__kfifo_int_must_check_helper( \ > +({ \ > + typeof((fifo) + 1) __tmp = (fifo); \ > + struct __kfifo *__kfifo = &__tmp->kfifo; \ > + __is_kfifo_ptr(__tmp) ? \ > + __kfifo_alloc_node(__kfifo, size, sizeof(*__tmp->type), gfp_mask, node) : \ > + -EINVAL; \ > +}) \ > +) Well this is an eyesore. Do we really need it? It seems to be here so we can check for a programming bug? Well, don't add programming bugs! I'm actually not enjoying the existence of __is_kfifo_ptr() at all. What is it all doing? It's a FIFO for heck's sake, why is this so hard. > @@ -902,6 +926,9 @@ __kfifo_uint_must_check_helper( \ > extern int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > size_t esize, gfp_t gfp_mask); > > +extern int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, > + size_t esize, gfp_t gfp_mask, int node); > + Nit: please align things like this: extern int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, size_t esize, gfp_t gfp_mask, int node); (several places) ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V3 01/27] kfifo: add kfifo_alloc_node() helper for NUMA awareness 2025-11-12 19:29 ` Andrew Morton @ 2025-11-13 1:21 ` Ming Lei 2025-11-13 22:06 ` Andrew Morton 0 siblings, 1 reply; 6+ messages in thread From: Ming Lei @ 2025-11-13 1:21 UTC (permalink / raw) To: Andrew Morton Cc: Jens Axboe, linux-block, Caleb Sander Mateos, Uday Shankar, Stefani Seibold, linux-kernel On Wed, Nov 12, 2025 at 11:29:14AM -0800, Andrew Morton wrote: > On Wed, 12 Nov 2025 17:37:39 +0800 Ming Lei <ming.lei@redhat.com> wrote: > > > Add __kfifo_alloc_node() by refactoring and reusing __kfifo_alloc(), > > and define kfifo_alloc_node() macro to support NUMA-aware memory > > allocation. > > > > The new __kfifo_alloc_node() function accepts a NUMA node parameter > > and uses kmalloc_array_node() instead of kmalloc_array() for > > node-specific allocation. The existing __kfifo_alloc() now calls > > __kfifo_alloc_node() with NUMA_NO_NODE to maintain backward > > compatibility. > > > > This enables users to allocate kfifo buffers on specific NUMA nodes, > > which is important for performance in NUMA systems where the kfifo > > will be primarily accessed by threads running on specific nodes. > > I was about to ask "please don't add infrastructure without users", but > I see a "01/27" there. I wander over to lkml but I can't find 02-27 > there either. Maybe something went wrong. It can be found in lore: https://lore.kernel.org/all/20251112093808.2134129-1-ming.lei@redhat.com/ > > I prefer to be cc'ed on the entire series, please. OK. > > > --- a/include/linux/kfifo.h > > +++ b/include/linux/kfifo.h > > @@ -369,6 +369,30 @@ __kfifo_int_must_check_helper( \ > > }) \ > > ) > > > > +/** > > + * kfifo_alloc_node - dynamically allocates a new fifo buffer on a NUMA node > > + * @fifo: pointer to the fifo > > + * @size: the number of elements in the fifo, this must be a power of 2 > > + * @gfp_mask: get_free_pages mask, passed to kmalloc() > > + * @node: NUMA node to allocate memory on > > + * > > + * This macro dynamically allocates a new fifo buffer with NUMA node awareness. > > + * > > + * The number of elements will be rounded-up to a power of 2. > > + * The fifo will be release with kfifo_free(). > > + * Return 0 if no error, otherwise an error code. > > + */ > > +#define kfifo_alloc_node(fifo, size, gfp_mask, node) \ > > +__kfifo_int_must_check_helper( \ > > +({ \ > > + typeof((fifo) + 1) __tmp = (fifo); \ > > + struct __kfifo *__kfifo = &__tmp->kfifo; \ > > + __is_kfifo_ptr(__tmp) ? \ > > + __kfifo_alloc_node(__kfifo, size, sizeof(*__tmp->type), gfp_mask, node) : \ > > + -EINVAL; \ > > +}) \ > > +) > > Well this is an eyesore. Do we really need it? It seems to be here so > we can check for a programming bug? Well, don't add programming bugs! > > I'm actually not enjoying the existence of __is_kfifo_ptr() at all. > What is it all doing? It's a FIFO for heck's sake, why is this so hard. It is basically a clone of existing kfifo_alloc(). Do we need to clean kfifo_alloc() first? Otherwise I'd keep the same pattern with existing definitions. > > > @@ -902,6 +926,9 @@ __kfifo_uint_must_check_helper( \ > > extern int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > > size_t esize, gfp_t gfp_mask); > > > > +extern int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, > > + size_t esize, gfp_t gfp_mask, int node); > > + > > Nit: please align things like this: > > extern int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, > size_t esize, gfp_t gfp_mask, int node); OK. Thanks, Ming ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V3 01/27] kfifo: add kfifo_alloc_node() helper for NUMA awareness 2025-11-13 1:21 ` Ming Lei @ 2025-11-13 22:06 ` Andrew Morton 0 siblings, 0 replies; 6+ messages in thread From: Andrew Morton @ 2025-11-13 22:06 UTC (permalink / raw) To: Ming Lei Cc: Jens Axboe, linux-block, Caleb Sander Mateos, Uday Shankar, Stefani Seibold, linux-kernel On Thu, 13 Nov 2025 09:21:41 +0800 Ming Lei <ming.lei@redhat.com> wrote: > > > +#define kfifo_alloc_node(fifo, size, gfp_mask, node) \ > > > +__kfifo_int_must_check_helper( \ > > > +({ \ > > > + typeof((fifo) + 1) __tmp = (fifo); \ > > > + struct __kfifo *__kfifo = &__tmp->kfifo; \ > > > + __is_kfifo_ptr(__tmp) ? \ > > > + __kfifo_alloc_node(__kfifo, size, sizeof(*__tmp->type), gfp_mask, node) : \ > > > + -EINVAL; \ > > > +}) \ > > > +) > > > > Well this is an eyesore. Do we really need it? It seems to be here so > > we can check for a programming bug? Well, don't add programming bugs! > > > > I'm actually not enjoying the existence of __is_kfifo_ptr() at all. > > What is it all doing? It's a FIFO for heck's sake, why is this so hard. > > It is basically a clone of existing kfifo_alloc(). > > Do we need to clean kfifo_alloc() first? Otherwise I'd keep the same > pattern with existing definitions. Is OK, I was just whining. Possibly de-over-engineering kifo is a separate project. ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V3 01/27] kfifo: add kfifo_alloc_node() helper for NUMA awareness 2025-11-12 9:37 ` [PATCH V3 01/27] kfifo: add kfifo_alloc_node() helper for NUMA awareness Ming Lei 2025-11-12 19:29 ` Andrew Morton @ 2025-11-15 4:14 ` Caleb Sander Mateos 2025-11-16 11:59 ` Ming Lei 1 sibling, 1 reply; 6+ messages in thread From: Caleb Sander Mateos @ 2025-11-15 4:14 UTC (permalink / raw) To: Ming Lei Cc: Jens Axboe, linux-block, Uday Shankar, Stefani Seibold, Andrew Morton, linux-kernel On Wed, Nov 12, 2025 at 1:38 AM Ming Lei <ming.lei@redhat.com> wrote: > > Add __kfifo_alloc_node() by refactoring and reusing __kfifo_alloc(), > and define kfifo_alloc_node() macro to support NUMA-aware memory > allocation. > > The new __kfifo_alloc_node() function accepts a NUMA node parameter > and uses kmalloc_array_node() instead of kmalloc_array() for > node-specific allocation. The existing __kfifo_alloc() now calls > __kfifo_alloc_node() with NUMA_NO_NODE to maintain backward > compatibility. > > This enables users to allocate kfifo buffers on specific NUMA nodes, > which is important for performance in NUMA systems where the kfifo > will be primarily accessed by threads running on specific nodes. > > Cc: Stefani Seibold <stefani@seibold.net> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Ming Lei <ming.lei@redhat.com> > --- > include/linux/kfifo.h | 27 +++++++++++++++++++++++++++ > lib/kfifo.c | 13 ++++++++++--- > 2 files changed, 37 insertions(+), 3 deletions(-) > > diff --git a/include/linux/kfifo.h b/include/linux/kfifo.h > index fd743d4c4b4b..61d1fe014a6c 100644 > --- a/include/linux/kfifo.h > +++ b/include/linux/kfifo.h > @@ -369,6 +369,30 @@ __kfifo_int_must_check_helper( \ > }) \ > ) > > +/** > + * kfifo_alloc_node - dynamically allocates a new fifo buffer on a NUMA node > + * @fifo: pointer to the fifo > + * @size: the number of elements in the fifo, this must be a power of 2 > + * @gfp_mask: get_free_pages mask, passed to kmalloc() > + * @node: NUMA node to allocate memory on > + * > + * This macro dynamically allocates a new fifo buffer with NUMA node awareness. > + * > + * The number of elements will be rounded-up to a power of 2. > + * The fifo will be release with kfifo_free(). > + * Return 0 if no error, otherwise an error code. > + */ > +#define kfifo_alloc_node(fifo, size, gfp_mask, node) \ > +__kfifo_int_must_check_helper( \ > +({ \ > + typeof((fifo) + 1) __tmp = (fifo); \ > + struct __kfifo *__kfifo = &__tmp->kfifo; \ > + __is_kfifo_ptr(__tmp) ? \ > + __kfifo_alloc_node(__kfifo, size, sizeof(*__tmp->type), gfp_mask, node) : \ > + -EINVAL; \ > +}) \ > +) > + > /** > * kfifo_free - frees the fifo > * @fifo: the fifo to be freed > @@ -902,6 +926,9 @@ __kfifo_uint_must_check_helper( \ > extern int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > size_t esize, gfp_t gfp_mask); > > +extern int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, > + size_t esize, gfp_t gfp_mask, int node); > + > extern void __kfifo_free(struct __kfifo *fifo); > > extern int __kfifo_init(struct __kfifo *fifo, void *buffer, > diff --git a/lib/kfifo.c b/lib/kfifo.c > index a8b2eed90599..195cf0feecc2 100644 > --- a/lib/kfifo.c > +++ b/lib/kfifo.c > @@ -22,8 +22,8 @@ static inline unsigned int kfifo_unused(struct __kfifo *fifo) > return (fifo->mask + 1) - (fifo->in - fifo->out); > } > > -int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > - size_t esize, gfp_t gfp_mask) > +int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, > + size_t esize, gfp_t gfp_mask, int node) > { > /* > * round up to the next power of 2, since our 'let the indices > @@ -41,7 +41,7 @@ int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > return -EINVAL; > } > > - fifo->data = kmalloc_array(esize, size, gfp_mask); > + fifo->data = kmalloc_array_node(esize, size, gfp_mask, node); > > if (!fifo->data) { > fifo->mask = 0; > @@ -51,6 +51,13 @@ int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > > return 0; > } > +EXPORT_SYMBOL(__kfifo_alloc_node); > + > +int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > + size_t esize, gfp_t gfp_mask) > +{ > + return __kfifo_alloc_node(fifo, size, esize, gfp_mask, NUMA_NO_NODE); > +} > EXPORT_SYMBOL(__kfifo_alloc); Is it worth keeping __kfifo_alloc() as an extern function? Seems like it would make the executable smaller to turn __kfifo_alloc() into a static inline function that just defers to __kfifo_alloc_node(). Best, Caleb > > void __kfifo_free(struct __kfifo *fifo) > -- > 2.47.0 > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH V3 01/27] kfifo: add kfifo_alloc_node() helper for NUMA awareness 2025-11-15 4:14 ` Caleb Sander Mateos @ 2025-11-16 11:59 ` Ming Lei 0 siblings, 0 replies; 6+ messages in thread From: Ming Lei @ 2025-11-16 11:59 UTC (permalink / raw) To: Caleb Sander Mateos Cc: Jens Axboe, linux-block, Uday Shankar, Stefani Seibold, Andrew Morton, linux-kernel On Fri, Nov 14, 2025 at 08:14:29PM -0800, Caleb Sander Mateos wrote: > On Wed, Nov 12, 2025 at 1:38 AM Ming Lei <ming.lei@redhat.com> wrote: > > > > Add __kfifo_alloc_node() by refactoring and reusing __kfifo_alloc(), > > and define kfifo_alloc_node() macro to support NUMA-aware memory > > allocation. > > > > The new __kfifo_alloc_node() function accepts a NUMA node parameter > > and uses kmalloc_array_node() instead of kmalloc_array() for > > node-specific allocation. The existing __kfifo_alloc() now calls > > __kfifo_alloc_node() with NUMA_NO_NODE to maintain backward > > compatibility. > > > > This enables users to allocate kfifo buffers on specific NUMA nodes, > > which is important for performance in NUMA systems where the kfifo > > will be primarily accessed by threads running on specific nodes. > > > > Cc: Stefani Seibold <stefani@seibold.net> > > Cc: Andrew Morton <akpm@linux-foundation.org> > > Cc: linux-kernel@vger.kernel.org > > Signed-off-by: Ming Lei <ming.lei@redhat.com> > > --- > > include/linux/kfifo.h | 27 +++++++++++++++++++++++++++ > > lib/kfifo.c | 13 ++++++++++--- > > 2 files changed, 37 insertions(+), 3 deletions(-) > > > > diff --git a/include/linux/kfifo.h b/include/linux/kfifo.h > > index fd743d4c4b4b..61d1fe014a6c 100644 > > --- a/include/linux/kfifo.h > > +++ b/include/linux/kfifo.h > > @@ -369,6 +369,30 @@ __kfifo_int_must_check_helper( \ > > }) \ > > ) > > > > +/** > > + * kfifo_alloc_node - dynamically allocates a new fifo buffer on a NUMA node > > + * @fifo: pointer to the fifo > > + * @size: the number of elements in the fifo, this must be a power of 2 > > + * @gfp_mask: get_free_pages mask, passed to kmalloc() > > + * @node: NUMA node to allocate memory on > > + * > > + * This macro dynamically allocates a new fifo buffer with NUMA node awareness. > > + * > > + * The number of elements will be rounded-up to a power of 2. > > + * The fifo will be release with kfifo_free(). > > + * Return 0 if no error, otherwise an error code. > > + */ > > +#define kfifo_alloc_node(fifo, size, gfp_mask, node) \ > > +__kfifo_int_must_check_helper( \ > > +({ \ > > + typeof((fifo) + 1) __tmp = (fifo); \ > > + struct __kfifo *__kfifo = &__tmp->kfifo; \ > > + __is_kfifo_ptr(__tmp) ? \ > > + __kfifo_alloc_node(__kfifo, size, sizeof(*__tmp->type), gfp_mask, node) : \ > > + -EINVAL; \ > > +}) \ > > +) > > + > > /** > > * kfifo_free - frees the fifo > > * @fifo: the fifo to be freed > > @@ -902,6 +926,9 @@ __kfifo_uint_must_check_helper( \ > > extern int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > > size_t esize, gfp_t gfp_mask); > > > > +extern int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, > > + size_t esize, gfp_t gfp_mask, int node); > > + > > extern void __kfifo_free(struct __kfifo *fifo); > > > > extern int __kfifo_init(struct __kfifo *fifo, void *buffer, > > diff --git a/lib/kfifo.c b/lib/kfifo.c > > index a8b2eed90599..195cf0feecc2 100644 > > --- a/lib/kfifo.c > > +++ b/lib/kfifo.c > > @@ -22,8 +22,8 @@ static inline unsigned int kfifo_unused(struct __kfifo *fifo) > > return (fifo->mask + 1) - (fifo->in - fifo->out); > > } > > > > -int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > > - size_t esize, gfp_t gfp_mask) > > +int __kfifo_alloc_node(struct __kfifo *fifo, unsigned int size, > > + size_t esize, gfp_t gfp_mask, int node) > > { > > /* > > * round up to the next power of 2, since our 'let the indices > > @@ -41,7 +41,7 @@ int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > > return -EINVAL; > > } > > > > - fifo->data = kmalloc_array(esize, size, gfp_mask); > > + fifo->data = kmalloc_array_node(esize, size, gfp_mask, node); > > > > if (!fifo->data) { > > fifo->mask = 0; > > @@ -51,6 +51,13 @@ int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > > > > return 0; > > } > > +EXPORT_SYMBOL(__kfifo_alloc_node); > > + > > +int __kfifo_alloc(struct __kfifo *fifo, unsigned int size, > > + size_t esize, gfp_t gfp_mask) > > +{ > > + return __kfifo_alloc_node(fifo, size, esize, gfp_mask, NUMA_NO_NODE); > > +} > > EXPORT_SYMBOL(__kfifo_alloc); > > Is it worth keeping __kfifo_alloc() as an extern function? Seems like > it would make the executable smaller to turn __kfifo_alloc() into a > static inline function that just defers to __kfifo_alloc_node(). OK, will convert to inline __kfifo_alloc() in next version. Thanks, Ming ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2025-11-16 12:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20251112093808.2134129-1-ming.lei@redhat.com>
2025-11-12 9:37 ` [PATCH V3 01/27] kfifo: add kfifo_alloc_node() helper for NUMA awareness Ming Lei
2025-11-12 19:29 ` Andrew Morton
2025-11-13 1:21 ` Ming Lei
2025-11-13 22:06 ` Andrew Morton
2025-11-15 4:14 ` Caleb Sander Mateos
2025-11-16 11:59 ` Ming Lei
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®