• Kent Overstreet's avatar
    bcachefs: Avoid __GFP_NOFAIL · 70d41c9e
    Kent Overstreet authored
    We've been using __GFP_NOFAIL for allocating struct bch_folio, our
    private per-folio state.
    
    However, that struct is variable size - it holds state for each sector
    in the folio, and folios can be quite large now, which means it's
    possible for bch_folio to be larger than PAGE_SIZE now.
    
    __GFP_NOFAIL allocations are undesirable in normal circumstances, but
    particularly so at >= PAGE_SIZE, and warnings are emitted for that.
    
    So, this patch adds proper error paths and eliminates most uses of
    __GFP_NOFAIL. Also, do some more cleanup of gfp flags w.r.t. btree node
    locks: we can use GFP_KERNEL, but only if we're not holding btree locks,
    and if we are holding btree locks we should be using GFP_NOWAIT.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    70d41c9e
fs-io.c 94.5 KB