• Yunsheng Lin's avatar
    page_frag: unify gfp bits for order 3 page allocation · 4bc0d63a
    Yunsheng Lin authored
    Currently there seems to be three page frag implementations
    which all try to allocate order 3 page, if that fails, it
    then fail back to allocate order 0 page, and each of them
    all allow order 3 page allocation to fail under certain
    condition by using specific gfp bits.
    
    The gfp bits for order 3 page allocation are different
    between different implementation, __GFP_NOMEMALLOC is
    or'd to forbid access to emergency reserves memory for
    __page_frag_cache_refill(), but it is not or'd in other
    implementions, __GFP_DIRECT_RECLAIM is masked off to avoid
    direct reclaim in vhost_net_page_frag_refill(), but it is
    not masked off in __page_frag_cache_refill().
    
    This patch unifies the gfp bits used between different
    implementions by or'ing __GFP_NOMEMALLOC and masking off
    __GFP_DIRECT_RECLAIM for order 3 page allocation to avoid
    possible pressure for mm.
    
    Leave the gfp unifying for page frag implementation in sock.c
    for now as suggested by Paolo Abeni.
    Signed-off-by: default avatarYunsheng Lin <linyunsheng@huawei.com>
    Reviewed-by: default avatarAlexander Duyck <alexanderduyck@fb.com>
    CC: Alexander Duyck <alexander.duyck@gmail.com>
    Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
    4bc0d63a
net.c 44.6 KB