[U-Boot] [PATCH v2 1/4] nand: Extend nand_(read|write)_skip_bad with *actual and limit parameters
Tom Rini
trini at ti.com
Wed Feb 27 17:49:55 CET 2013
On Tue, Feb 26, 2013 at 10:56:08AM -0500, Tom Rini wrote:
> We make these two functions take a size_t pointer to how much space
> was used on NAND to read or write the buffer (when reads/writes happen)
> so that bad blocks can be accounted for. We also make them take an
> loff_t limit on how much data can be read or written. This means that
> we can now catch the case of when writing to a partition would exceed
> the partition size due to bad blocks. To do this we also need to make
[snip]
> int nand_read_skip_bad(nand_info_t *nand, loff_t offset, size_t *length,
> - u_char *buffer)
> + size_t *actual, loff_t lim, u_char *buffer)
[snip]
> + if (*actual > lim) {
> + puts("Size of read exceeds partition or device limit\n");
> + *length = 0;
> + return -EFBIG;
> + }
The more I look at this and try testing things, I think I shouldn't be
introducing a change here. Before you could do:
nand read ${address} partname-with-badblock
And it would suceed but bleed into the next partition if it wasn't the
last one. So your production system could do "nand read ${address}
kernel" and be OK. But with this change, it would fail because reading
the whole partition is now too large with a bad block (you would need
partition+(blocksize*number bad blocks).
So I'm going to put this back to a check simply against requested size
being greater than lim rather than required size greater than lim (since
required size exceeds device is still caught).
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20130227/b62f0136/attachment.pgp>
More information about the U-Boot
mailing list