• Michal Hocko's avatar
    mm/vmalloc: add support for __GFP_NOFAIL · 9376130c
    Michal Hocko authored
    Dave Chinner has mentioned that some of the xfs code would benefit from
    kvmalloc support for __GFP_NOFAIL because they have allocations that
    cannot fail and they do not fit into a single page.
    
    The large part of the vmalloc implementation already complies with the
    given gfp flags so there is no work for those to be done.  The area and
    page table allocations are an exception to that.  Implement a retry loop
    for those.
    
    Add a short sleep before retrying.  1 jiffy is a completely random
    timeout.  Ideally the retry would wait for an explicit event - e.g.  a
    change to the vmalloc space change if the failure was caused by the
    space fragmentation or depletion.  But there are multiple different
    reasons to retry and this could become much more complex.  Keep the
    retry simple for now and just sleep to prevent from hogging CPUs.
    
    Link: https://lkml.kernel.org/r/20211122153233.9924-3-mhocko@kernel.orgSigned-off-by: default avatarMichal Hocko <mhocko@suse.com>
    Acked-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Cc: Christoph Hellwig <hch@lst.de>
    Cc: Dave Chinner <david@fromorbit.com>
    Cc: Ilya Dryomov <idryomov@gmail.com>
    Cc: Jeff Layton <jlayton@kernel.org>
    Cc: Neil Brown <neilb@suse.de>
    Cc: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Uladzislau Rezki (Sony) <urezki@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    9376130c
vmalloc.c 103 KB