• David Woodhouse's avatar
    [JFFS2] Fix jffs2_reserve_space() when all blocks are pending erasure. · 422b1202
    David Woodhouse authored
    When _all_ the blocks were on the erase_pending_list, we could't find a
    block to GC from but there was no _actually_ free space, and
    jffs2_reserve_space() would get a little unhappy.
    
    Handle this case by returning -EAGAIN from jffs2_garbage_collect_pass().
    There are two callers of that function -- jffs2_flush_wbuf_gc(), which
    will interpret it as an error and flush the writebuffer by other means,
    and jffs2_reserve_space(), which we modify to respond to -EAGAIN with an
    immediate call to jffs2_erase_pending_blocks() and another run round the
    loop.
    Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
    422b1202
gc.c 43.3 KB