1
linux/drivers/mtd/ubi
Artem Bityutskiy 5fc01ab693 UBI: preserve corrupted PEBs
Currently UBI erases all corrupted eraseblocks, irrespectively of the nature
of corruption: corruption due to power cuts and non-power cut corruption.
The former case is OK, but the latter is not, because UBI may destroy
potentially important data.

With this patch, during scanning, when UBI hits a PEB with corrupted VID
header, it checks whether this PEB contains only 0xFF data. If yes, it is
safe to erase this PEB and it is put to the 'erase' list. If not, this may
be important data and it is better to avoid erasing this PEB. Instead,
UBI puts it to the corr list and moves out of the pool of available PEB.
IOW, UBI preserves this PEB.

Such corrupted PEB lessen the amount of available PEBs. So the more of them
we accumulate, the less PEBs are available. The maximum amount of non-power
cut corrupted PEBs is 8.

This patch is a response to UBIFS problem where reporter
(Matthew L. Creech <mlcreech@gmail.com>) observes that UBIFS index points
to an unmapped LEB. The theory is that corresponding PEB somehow got
corrupted and UBI wiped it. This patch (actually a series of patches)
tries to make sure such PEBs are preserved - this would make it is easier
to analyze the corruption.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
2010-10-19 17:19:57 +03:00
..
build.c UBI: preserve corrupted PEBs 2010-10-19 17:19:57 +03:00
cdev.c UBI: eliminate update of list_for_each_entry loop cursor 2010-08-30 10:19:11 +03:00
debug.c UBI: introduce flash dump helper 2009-08-14 20:02:20 +03:00
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 include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
io.c UBI: make check_pattern function non-static 2010-10-19 17:19:57 +03:00
kapi.c UBI: fix s/then/than/ typos 2010-05-07 08:33:10 +03:00
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 UBI: make gluebi a separate module 2009-06-03 17:45:23 +03:00
misc.c UBI: make check_pattern function non-static 2010-10-19 17:19:57 +03:00
scan.c UBI: preserve corrupted PEBs 2010-10-19 17:19:57 +03:00
scan.h UBI: do not put eraseblocks to the corrupted list unnecessarily 2010-10-19 17:19:57 +03:00
ubi-media.h UBI: add image sequence number to EC header 2009-07-05 18:47:07 +03:00
ubi.h UBI: preserve corrupted PEBs 2010-10-19 17:19:57 +03:00
upd.c UBI: fix memory leak in update path 2010-01-18 18:53:56 +02:00
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