lkml.org 
[lkml]   [2012]   [Apr]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC] propagate gfp_t to page table alloc functions
    On Thu, 26 Apr 2012, KAMEZAWA Hiroyuki wrote:

    > > Or do we instead do this:
    > >
    > > - some_function(foo, bar, GFP_NOIO);
    > > + old_gfp = set_current_gfp(GFP_NOIO);
    > > + some_function(foo, bar);
    > > + set_current_gfp(old_gfp);
    > >
    > > So the rule is "if the code was using an explicit GFP_foo then convert
    > > it to use set_current_gfp(). If the code was receiving a gfp_t
    > > variable from the caller then delete that arg".
    > >
    > > Or something like that. It's all too hopelessly impractical to bother
    > > discussing - 20 years too late!
    > >
    > >
    > > otoh, maybe a constrained version of this could be used to address the
    > > vmalloc() problem alone.
    > >
    >
    > Yes, I think it will be good start.
    >

    Maybe a per-thread_info variant of gfp_allowed_mask? So Andrew's
    set_current_gfp() becomes set_current_gfp_allowed() that does

    void set_current_gfp_allowed(gfp_t gfp_mask)
    {
    current->gfp_allowed = gfp_mask & gfp_allowed_mask;
    }

    and then the page allocator does

    gfp_mask &= current->gfp_allowed;

    rather than how it currently does

    gfp_mask &= gfp_allowed_mask;

    and then the caller of set_current_gfp_allowed() cleans up with
    set_current_gfp_allowed(__GFP_BITS_MASK).


    \
     
     \ /
      Last update: 2012-04-26 02:23    [W:0.022 / U:30.036 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site