[U-Boot] [PATCH] mtd: nand: fix the written length when nand_write_skip_bad failed

Scott Wood scottwood at freescale.com
Thu Mar 7 23:27:47 CET 2013


On 03/07/2013 09:02:27 AM, htbegin wrote:
> Hi, Scott
> 
> On Thu, Mar 7, 2013 at 2:22 AM, Scott Wood <scottwood at freescale.com>  
> wrote:
> > On 03/06/2013 08:56:56 AM, htbegin wrote:
> >> > BTW, are you actually using WITH_YAFFS_OOB?  I think there are  
> some
> >> > other
> >> > things wrong with it at the moment, as mentioned here:
> >> > http://lists.denx.de/pipermail/u-boot/2013-March/148378.html
> >> No, I don't use it.
> >
> >
> > Changes to that code should be tested by someone...
> Sorry, I can't help.

It's moot because I don't think this change should be made, but this is  
a case where you could enable it temporarily in your board config for  
some basic testing.

> >> I just use "*length -= left_to_write - written_size" to tell the  
> upper
> >> level that what
> >> had been actually happened. For the current block, "written_size"  
> has
> >> been written to the NAND Flash yet, so left_to_write should be
> >> subtracted by "written_size".
> >
> >
> > But left_to_write isn't decreased until after this error return, so  
> that's
> > already the case.  Subtracting written_size from left_to_write has  
> the
> > effect of increasing length by written_size, so the return value  
> will now
> > look like the error page has been written.
> >
> > -Scott
> No, the returned value doesn't include the length of the error page.
> In no-WITH_YAFFS_OOB case,  when nand_write failed,
> truncated_write_size has been
> updated by nand_write to the length which has been successfully
> written , so it's OK to subtract written_size from left_to_write.

OK, but that doesn't explain why the change is needed.  You said you  
wanted to find the block with the error.  We only write one block at a  
time in the loop.  Why do you need the specific page within the block  
that failed?

-Scott


More information about the U-Boot mailing list