mtd-utils/nandwrite: what if write fails?

Ricard Wanderlof ricard.wanderlof at axis.com
Tue Oct 17 10:17:11 EDT 2006


I have a question regarding writes to NAND flash; for instance, in 
mtd-utils/nandwrite.c, prior to writing to a block, it is checked so that 
it isn't bad (using the MEMGETBADBLOCK ioctl). However, what happens if 
the block goes bad during write? If the pwrite() call which writes out the 
page data fails, the application says perror() and exits. Shouldn't it 
mark the block as bad, and re-write the data so far written to the block 
to the next good block? As I understand it, mtd doesn't mark a block bad, 
it is up to the application or overlying file system (e.g. JFFS2). So it 
won't even help to run nandwrite again as the block has not been marked 
bad.

Or have I missed something here?

(Or is it simply that normally nandwrite is only used during testing, or 
writing an initial filesystem, and the likelyhood of a block failing at 
precisely this time is rather small, compared to the rest of the lifetime 
of the memory (i.e. repeated JFFS2 accesses)?)

/Ricard
--
Ricard Wolf Wanderlöf                           ricardw(at)axis.com
Axis Communications AB, Lund, Sweden            www.axis.com
Phone +46 46 272 2016                           Fax +46 46 13 61 30


More information about the linux-mtd mailing list