Re: [PATCH 0/3] netfilter : 3 patches to boost ip_tables performance

Dave Hansen
2005-09-23T18:05:09Z

On Fri, 2005-09-23 at 10:44 -0700, Christoph Lameter wrote:
> for (i = 0; i < area->nr_pages; i++) {
> - area->pages[i] = alloc_page(gfp_mask);
> + if (node < 0)
> + area->pages[i] = alloc_page(gfp_mask);
> + else
> + area->pages[i] = alloc_pages_node(node, gfp_mask, 0);
> if (unlikely(!area->pages[i])) {
> /* Successfully allocated i pages, free them in __vunmap() */
> area->nr_pages = i;
...
> void *vmalloc_exec(unsigned long size)
> {
> - return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC);
> + return __vmalloc(size, GFP_KERNEL | __GFP_HIGHMEM, PAGE_KERNEL_EXEC, -1);
> }

Instead of hard-coding all of those -1's for the node to specify a
default allocation, and changing all of those callers, why not:

void *__vmalloc_node(unsigned long size, unsigned int __nocast gfp_mask,
pgprot_t prot, int node)
{
... existing vmalloc code here
}

void *__vmalloc(unsigned long size, unsigned int __nocast gfp_mask,
pgprot_t prot)
{
__vmalloc_node(size, gfp_mask, prot, -1);
}

A named macro is probably better than -1, but if it is only used in one
place, it is hard to complain.

-- Dave