UBIFS Corrupt during power failure

Artem Bityutskiy dedekind at infradead.org
Mon May 25 08:54:42 EDT 2009


On Mon, 2009-05-25 at 11:38 +0300, Artem Bityutskiy wrote:
> Presumably what happens it: UBIFS scans LEB 120. It checks the first
> node, and finds CRC mismatch. Then UBIFS logic is as follows. If this
> corrupted node is the last one, then there was a write interrupt,
> which is harmless. But if after this node some other data follows,
> this is some serious corruption. So the 'is_last_write()' function
> is called, it is supposed to check that.
> 
> In 'is_last_write()' I see it has different logic depending on whether
> c->min_io_size == 1 or not. The former case is NOR case, the latter
> is NAND. Well, since I know we never tested UBIFS well for NOR,
> I conclude the NOR case may have a bug.

Oh, this 'c->min_io_size == 1' case is just dead code, we never have
c->min_io_size < 8 in UBIFS. So I just remove that (patch at the end
of the e-mail).

Eric, please, reproduce this problem again. Then please, do not
"fix" it from u-boot. But instead, please do:

1. Enable UBIFS debugging
2. Enable recovery and mount messages, by booting with
   "ubifs.debug_msgs=6144" kernel parameter
3. also add the "ignore_loglevel" boot parameter
4. capture _all_ messages in minicom
5. If possible, make a full dump of your flash to play with it
   later.

Share the messages with us. I hope we can fix these problems.
Just provide us the info.

-- 
Best regards,
Artem Bityutskiy (Битюцкий Артём)




More information about the linux-mtd mailing list