android_kernel_xiaomi_sm8350/drivers/mtd/ubi
Artem Bityutskiy 7ac760c2f7 UBI: fix corrupted PEB detection for NOR flash
My new shiny code for corrupted PEB detection has NOR specific bug.
We tread PEB as corrupted and preserve it, if

1. EC header is OK.
2. VID header is corrupted.
3. data area is not "all 0xFFs"

In case of NOR we have 'nor_erase_prepare()' quirk, which invalidates
the headers before erasing the PEB. And we invalidate first the VID
header, and then the EC header. So if a power cut happens after we have
invalidated the VID header, but before we have invalidated the EC
header, we end up with a PEB which satisfies the above 3 conditions,
and the scanning code will treat it as corrupted, and will print
scary warnings, wrongly.

This patch fixes the issue by firt invalidating the EC header, then
invalidating the VID header. In case of power cut inbetween, we still
just lose the EC header, and UBI can deal with this situation gracefully.

Thanks to Anatolij Gustschin <agust@denx.de> for tracking this down.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Reported-by: Anatolij Gustschin <agust@denx.de>
Tested-by: Anatolij Gustschin <agust@denx.de>
2010-12-03 15:49:21 +02:00
..
build.c UBI: preserve corrupted PEBs 2010-10-19 17:19:57 +03:00
cdev.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
debug.c
debug.h UBI: introduce debugging helper function 2010-10-19 17:19:57 +03:00
eba.c UBI: preserve corrupted PEBs 2010-10-19 17:19:57 +03:00
gluebi.c
io.c UBI: fix corrupted PEB detection for NOR flash 2010-12-03 15:49:21 +02:00
kapi.c
Kconfig UBI: cleanup and simplify Kconfig 2010-10-19 17:19:55 +03:00
Kconfig.debug UBI: cleanup and simplify Kconfig 2010-10-19 17:19:55 +03:00
Makefile
misc.c UBI: make check_pattern function non-static 2010-10-19 17:19:57 +03:00
scan.c UBI: fix corrupted PEB detection for NOR flash 2010-12-03 15:49:21 +02:00
scan.h UBI: remember copy_flag while scanning 2010-10-21 11:20:36 +03:00
ubi-media.h
ubi.h UBI: preserve corrupted PEBs 2010-10-19 17:19:57 +03:00
upd.c
vmt.c UBI: preserve corrupted PEBs 2010-10-19 17:19:57 +03:00
vtbl.c UBI: preserve corrupted PEBs 2010-10-19 17:19:57 +03:00
wl.c UBI: preserve corrupted PEBs 2010-10-19 17:19:57 +03:00