• Zhihao Cheng's avatar
    ubi: fastmap: Fix missed fm_anchor PEB in wear-leveling after disabling fastmap · 76f9476e
    Zhihao Cheng authored
    After disabling fastmap(ubi->fm_disabled = 1), fastmap won't be updated,
    fm_anchor PEB is missed being scheduled for erasing. Besides, fm_anchor
    PEB may have smallest erase count, it doesn't participate wear-leveling.
    The difference of erase count between fm_anchor PEB and other PEBs will
    be larger and larger later on.
    
    In which situation fastmap can be disabled? Initially, we have an UBI
    image with fastmap. Then the image will be atttached without module
    parameter 'fm_autoconvert', ubi turns to full scanning mode in one
    random attaching process(eg. bad fastmap caused by powercut), ubi
    fastmap is disabled since then.
    
    Fix it by not getting fm_anchor if fastmap is disabled in
    ubi_refill_pools().
    
    Fetch a reproducer in [Link].
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=216341
    Fixes: 4b68bf9a ("ubi: Select fastmap anchor PEBs considering ...")
    Signed-off-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    76f9476e
fastmap-wl.c 11.6 KB