On Saturday 16 February 2013 11:30:43 Steven Hein wrote: > I've had a situation where NAND blocks are being marked bad > invalidly due to a HW/driver issue, and I am trying to recover them. > > I've patched the MTD code to allow bad block erase, and I've > the scrounged together a MEMSETGOODBLOCK ioctl patch to > allow bad blocks to be unmarked in the BBT. All of this is working: > I can erase bad blocks (and verify that data and OOB are all 0xff's), > and I can unmark the blocks bad in the BBT. > > When I have a YAFFS2 filesystem that has bad blocks, I use this > sequence to attempt to recover the blocks: > > (1) unmount the filesystem > (2) erase the bad blocks > (3) unmark the blocks bad > (4) mount the filesystem > > After this sequence, I have found that I have files in the > filesystem that are corrupted or missing, but they were > correct before I started the sequence. Adding erased blocks to a yaffs partition should not cause any problems so long as you mount without the scheckpoint, thus forcing a rescan to find the erased blocks. I suspect your procedure might not be working properly. Sometimes drivers will not erase a bad block. Try changing the order: unmount, unmark then erase bad blocks. check that the block really is erased remount. -- Charles