lkml.org 
[lkml]   [2018]   [Apr]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: vmalloc with GFP_NOFS
    On Tue, Apr 24, 2018 at 10:27:12AM -0600, Michal Hocko wrote:
    > fs/ext4/xattr.c
    >
    > What to do about this? Well, there are two things. Firstly, it would be
    > really great to double check whether the GFP_NOFS is really needed. I
    > cannot judge that because I am not familiar with the code.

    *Most* of the time it's not needed, but there are times when it is.
    We could be more smart about sending down GFP_NOFS only when it is
    needed. If we are sending too many GFP_NOFS's allocations such that
    it's causing heartburn, we could fix this. (xattr commands are rare
    enough that I dind't think it was worth it to modulate the GFP flags
    for this particular case, but we could make it be smarter if it would
    help.)

    > If the use is really valid then we have a way to do the vmalloc
    > allocation properly. We have memalloc_nofs_{save,restore} scope api. How
    > does that work? You simply call memalloc_nofs_save when the reclaim
    > recursion critical section starts (e.g. when you take a lock which is
    > then used in the reclaim path - e.g. shrinker) and memalloc_nofs_restore
    > when the critical section ends. _All_ allocations within that scope
    > will get GFP_NOFS semantic automagically. If you are not sure about the
    > scope itself then the easiest workaround is to wrap the vmalloc itself
    > with a big fat comment that this should be revisited.

    This is something we could do in ext4. It hadn't been high priority,
    because we've been rather overloaded. As a suggestion, could you take
    documentation about how to convert to the memalloc_nofs_{save,restore}
    scope api (which I think you've written about e-mails at length
    before), and put that into a file in Documentation/core-api?

    The question I was trying to figure out which triggered the above
    request is how/whether to gradually convert to that scope API. Is it
    safe to add the memalloc_nofs_{save,restore} to code and keep the
    GFP_NOFS flags until we're sure we got it all right, for all of the
    code paths, and then drop the GFP_NOFS?

    Thanks,

    - Ted

    \
     
     \ /
      Last update: 2018-04-24 20:36    [W:2.289 / U:0.220 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site