[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160428165934.GQ31489@dhcp22.suse.cz>
Date: Thu, 28 Apr 2016 18:59:34 +0200
From: Michal Hocko <mhocko@...nel.org>
To: Mikulas Patocka <mpatocka@...hat.com>
Cc: Andrew Morton <akpm@...ux-foundation.org>, linux-mm@...ck.org,
LKML <linux-kernel@...r.kernel.org>,
Shaohua Li <shli@...nel.org>, dm-devel@...hat.com
Subject: Re: [PATCH] md: simplify free_params for kmalloc vs vmalloc fallback
On Thu 28-04-16 11:40:59, Mikulas Patocka wrote:
[...]
> There are many users that use one of these patterns:
>
> if (size <= some_threshold)
> p = kmalloc(size);
> else
> p = vmalloc(size);
>
> or
>
> p = kmalloc(size);
> if (!p)
> p = vmalloc(size);
>
>
> For example: alloc_fdmem, seq_buf_alloc, setxattr, getxattr, ipc_alloc,
> pidlist_allocate, get_pages_array, alloc_bucket_locks,
> frame_vector_create. If you grep the kernel for vmalloc, you'll find this
> pattern over and over again.
It is certainly good to address a common pattern by a helper if it makes
to code easier to follo IMHO.
>
> In alloc_large_system_hash, there is
> table = __vmalloc(size, GFP_ATOMIC, PAGE_KERNEL);
> - that is clearly wrong because __vmalloc doesn't respect GFP_ATOMIC
I have seen this code some time already. I guess it was Al complaining
about it but then I just forgot about it. I have no idea why GFP_ATOMIC
was used there. This predates git times but it should be
https://www.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.10/2.6.10-mm1/broken-out/alloc_large_system_hash-numa-interleaving.patch
The changelog is quite verbose but no mention about this ugliness.
So I do agree that the above should be fixed and a common helper might
be interesting but I am afraid we are getting off topic here.
Thanks!
--
Michal Hocko
SUSE Labs
Powered by blists - more mailing lists