
On 03/07/2013 09:02:27 AM, htbegin wrote:
Hi, Scott
On Thu, Mar 7, 2013 at 2:22 AM, Scott Wood scottwood@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