linux-stable/drivers/mtd
Zhihao Cheng 76f9476ece ubi: fastmap: Fix missed fm_anchor PEB in wear-leveling after disabling fastmap
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: 4b68bf9a69 ("ubi: Select fastmap anchor PEBs considering ...")
Signed-off-by: Zhihao Cheng <chengzhihao1@huawei.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
2023-02-02 21:13:49 +01:00
..
chips mtd: cfi_cmdset_0002: Rename chip_ready variables 2022-04-28 10:17:22 +02:00
devices mtd: remove lart flash driver 2022-11-07 17:14:14 +01:00
hyperbus mtd: hyperbus: rpc-if: Fix RPM imbalance in probe error path 2022-06-24 20:47:36 +02:00
lpddr mtd: lpddr2_nvm: Fix possible null-ptr-deref 2022-11-17 21:59:03 +01:00
maps mtd: maps: pxa2xx-flash: fix memory leak in probe 2022-11-24 12:33:38 +01:00
nand MTD core changes: 2022-12-13 12:32:07 -08:00
parsers mtd: parsers: scpart: fix __udivdi3 undefined on mips 2023-01-02 12:08:51 +01:00
spi-nor mtd: cfi: allow building spi-intel standalone 2023-01-02 12:08:53 +01:00
tests treewide: use get_random_u32_below() instead of deprecated function 2022-11-18 02:15:15 +01:00
ubi ubi: fastmap: Fix missed fm_anchor PEB in wear-leveling after disabling fastmap 2023-02-02 21:13:49 +01:00
ftl.c mtd: ftl: use container_of() rather than cast 2022-09-19 18:14:53 +02:00
inftlcore.c mtd: inftlcore: fix repeated words in comments 2022-11-07 17:14:21 +01:00
inftlmount.c
Kconfig
Makefile
mtd_blkdevs.c block: remove blk_cleanup_disk 2022-06-28 06:33:15 -06:00
mtdblock.c mtdblock: warn if opened on NAND 2022-04-25 10:43:12 +02:00
mtdblock_ro.c
mtdchar.c mtdchar: add MEMREAD ioctl 2022-09-21 10:38:11 +02:00
mtdconcat.c mtd: fix repeated word in comment 2022-09-20 10:40:30 +02:00
mtdcore.c mtd: core: Fix refcount error in del_mtd_device() 2022-11-24 12:32:16 +01:00
mtdcore.h
mtdoops.c mtd: mtdoops: panic caused mtdoops to call mtdoops_erase function immediately 2022-11-07 17:08:00 +01:00
mtdpart.c mtd: call of_platform_populate() for MTD partitions 2022-05-16 18:37:48 +02:00
mtdpstore.c mtd: Fix a typo in a comment 2022-09-19 18:14:53 +02:00
mtdsuper.c
mtdswap.c mtd: always initialize 'stats' in struct mtd_oob_ops 2022-09-21 10:38:07 +02:00
nftlcore.c mtd: always initialize 'stats' in struct mtd_oob_ops 2022-09-21 10:38:07 +02:00
nftlmount.c
rfd_ftl.c
sm_ftl.c mtd: always initialize 'stats' in struct mtd_oob_ops 2022-09-21 10:38:07 +02:00
sm_ftl.h
ssfdc.c mtd: always initialize 'stats' in struct mtd_oob_ops 2022-09-21 10:38:07 +02:00