UBIFS recovery fails

Daniel Kuhn cheeef at swissonline.ch
Tue Oct 18 11:29:46 EDT 2011


Thanks for the immediate responses.

> If you just have precious data which you need - I think:
> 1. Make a dump of the flash.
> 2. Verify that on another device you can flash it and reproduce this
> issue.
> 3. Just hack the function in kernel that fails to return 0 instead
> of error for that case, and I think you will be able to mount your
> flash and copy your data.

Luckily I could restore the data on the volume (a single file) after 
some tests with
various code changes. Finally I succeeded by uncommenting the journal 
replay function call in the file "super.c". Changing return codes to 
zero in several other places lead to new errors in other code parts.

> This issue looks like one of the MLC-specific ones. Unfortunately,
> no one really invested time into making UBIFS support MLC very well.
> It needs some more work. It also have some issues related to unstable
> bits in modern SLC.
>
The NAND Flash I'm using is a Samsung SLC NAND K9WBG08U1M. So this isn't 
MLC-specific.
It seems strange to me that a whole data block gets empty during 
operation or as a result of a power failure. The device on which this 
error occured is a prototype on which I run various tests during 
development and the original bad block markers from the manufacturer 
were overwritten by low level tests with an embedded FPGA-Softcore CPU. 
So maybe the failed LEB 3550 was originally a bad eraseblock but I can't 
tell for sure.

Any further ideas to improve the UBIFS data security is really appreciated.

Thanks,
Daniel Kuhn




More information about the linux-mtd mailing list