* Interest in making jffs2 physically correct NAND bit-flips
@ 2009-08-27 14:54 Norbert van Bolhuis
0 siblings, 0 replies; only message in thread
From: Norbert van Bolhuis @ 2009-08-27 14:54 UTC (permalink / raw)
To: Mtd List
First some background:
Unfortunately we have deployed products that have a NAND device
which suffers from bit-flips.
Occasionally uncorrectable bit-flips occur (-EBADMSG) causing
data loss.
We use JFFS2. As known JFFS2 detects and corrects single bit-flips
(per 256 byte subpage) but it doesn't physically correct them
on the NAND device itself.
To prevent further trouble (2 bit-flips in one subpage) we've
made JFFS2 correct NAND bit-flips on the NAND device itself
(and try to upgrade the deployed products a.s.a.p.).
Btw. in our case the bit-flips are caused by a single bits charge loss
causing a programmed 0 to become 1.
I know UBI(FS) already corrects bit-flips on NAND, but it is not an
option for us to upgrade deployed products to another flash fs.
Besides we're using the good old linux-2.4 kernel.
My question is: is there any interest in an mtd-2.6.git patch to make
jffs2 correct NAND bit-flips ?
I'm asking because it is quite some work to forward patch (and test) the
fix to mtd-2.6.git.
Also note that most likely reviews/corrections (code style issues, bugs,
etc..) have to be made (after all I'm not a kernel/mtd developer).
Of course I'm willing to process all corrections/comments/questions
that one may have.
We make jffs2 correct the NAND bit-flips in a couple of (simple) steps:
-1- detect bit-flip and post JEB to a worker_list
-2- process worker_list (in a separate thread) by moving the JEB from
regular jffs2 list (e.g. dirty_list) to the bad_used list.
-3- trigger JFFS2 GC to process the JEB on the bad_used list
JFFS2 GC does the rest (moving the valid data to another block and
erase the JEB).
The fix can be turned on/off with a kernel config #define.
Since we have quite some static data on the NAND (cached by the kernel)
reading NAND blocks and detecting bit-flips also happens regularly
(by a seperate thread).
We also have a lot of free space (and not a lot of dirty nodes) so
originally GC never got triggered.
Any feedback is welcome.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-08-27 14:54 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-27 14:54 Interest in making jffs2 physically correct NAND bit-flips Norbert van Bolhuis
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.