Followup fixes on the mtdparts spread patchset
Consolidate some code in mtd_get_len_incl_bad(), and fix a condition where a valid partition could be reported as truncated if it has a good block at the end of the device (unlikely, since the BBT is usually there). Fix mid-block declarations in net_part_size(). Signed-off-by: Scott Wood <scottwood@freescale.com> Reviewed-by: Ben Gardiner <bengardiner@nanometrics.ca>
This commit is contained in:
parent
59a50d2de1
commit
36650ca9f1
@ -1228,15 +1228,16 @@ static int generate_mtdparts_save(char *buf, u32 buflen)
|
||||
*/
|
||||
static uint64_t net_part_size(struct mtd_info *mtd, struct part_info *part)
|
||||
{
|
||||
uint64_t i, net_size = 0;
|
||||
|
||||
if (!mtd->block_isbad)
|
||||
return part->size;
|
||||
|
||||
uint64_t i, net_size = 0;
|
||||
|
||||
for (i = 0; i < part->size; i += mtd->erasesize) {
|
||||
if (!mtd->block_isbad(mtd, part->offset + i))
|
||||
net_size += mtd->erasesize;
|
||||
}
|
||||
|
||||
return net_size;
|
||||
}
|
||||
#endif
|
||||
|
@ -162,11 +162,6 @@ void mtd_get_len_incl_bad(struct mtd_info *mtd, uint64_t offset,
|
||||
*truncated = 0;
|
||||
*len_incl_bad = 0;
|
||||
|
||||
if (offset >= mtd->size) {
|
||||
*truncated = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!mtd->block_isbad) {
|
||||
*len_incl_bad = length;
|
||||
return;
|
||||
@ -176,6 +171,11 @@ void mtd_get_len_incl_bad(struct mtd_info *mtd, uint64_t offset,
|
||||
uint64_t block_len;
|
||||
|
||||
while (len_excl_bad < length) {
|
||||
if (offset >= mtd->size) {
|
||||
*truncated = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
block_len = mtd->erasesize - (offset & (mtd->erasesize - 1));
|
||||
|
||||
if (!mtd->block_isbad(mtd, offset & ~(mtd->erasesize - 1)))
|
||||
@ -183,11 +183,6 @@ void mtd_get_len_incl_bad(struct mtd_info *mtd, uint64_t offset,
|
||||
|
||||
*len_incl_bad += block_len;
|
||||
offset += block_len;
|
||||
|
||||
if (offset >= mtd->size) {
|
||||
*truncated = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* defined(CONFIG_CMD_MTDPARTS_SPREAD) */
|
||||
|
Loading…
Reference in New Issue
Block a user