lkml.org 
[lkml]   [2010]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch v2 1/5] mm: add nofail variants of kmalloc kcalloc and kzalloc
    On Thu 02-09-10 09:59:13, Jiri Slaby wrote:
    > On 09/02/2010 03:02 AM, David Rientjes wrote:
    > > --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -334,6 +334,57
    > > @@ static inline void *kzalloc_node(size_t size, gfp_t flags, int node)
    > > return kmalloc_node(size, flags | __GFP_ZERO, node); }
    > >
    > > +/** + * kmalloc_nofail - infinitely loop until kmalloc() succeeds. +
    > > * @size: how many bytes of memory are required. + * @flags: the type
    > > of memory to allocate (see kmalloc). + * + * NOTE: no new callers of
    > > this function should be implemented! + * All memory allocations should
    > > be failable whenever possible. + */ +static inline void
    > > *kmalloc_nofail(size_t size, gfp_t flags) +{ + void *ret; + + for
    > > (;;) { + ret = kmalloc(size, flags); + if (ret) +
    > > return ret; + WARN_ON_ONCE(get_order(size) >
    > > PAGE_ALLOC_COSTLY_ORDER);
    >
    > This doesn't work as you expect. kmalloc will warn every time it fails.
    > __GFP_NOFAIL used to disable the warning. Actually what's wrong with
    > __GFP_NOFAIL? I cannot find a reason in the changelogs why the patches
    > are needed.
    David should probably add the reasoning to the changelogs so that he
    doesn't have to explain again and again ;). But if I understood it
    correctly, the concern is that the looping checks slightly impact fast path
    of the callers which do not need it. Generally, also looping for a long
    time inside allocator isn't a nice thing but some callers aren't able to do
    better for now to the patch is imperfect in this sence...

    Honza
    --
    Jan Kara <jack@suse.cz>
    SUSE Labs, CR


    \
     
     \ /
      Last update: 2010-09-02 16:55    [W:0.022 / U:29.612 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site