[U-Boot] [PATCH v4 4/4] mtdparts: new add.spread: add part skipping bad blocks

Ben Gardiner
2010-08-27T13:52:56Z

On Thu, Aug 26, 2010 at 6:26 PM, Scott Wood <scottwood@freescale.com> wrote:
> On Mon, Aug 09, 2010 at 04:44:00PM -0400, Ben Gardiner wrote:
>> +#if defined(CONFIG_CMD_MTDPARTS_SPREAD)
>> + ? ? ? ? ? ? s = strchr(argv[1], '.');
>> +
>> + ? ? ? ? ? ? if (get_mtd_info(dev->id->type, dev->id->num, &mtd))
>> + ? ? ? ? ? ? ? ? ? ? return 1;
>> +#endif
>> +
>> ? ? ? ? ? ? ? if ((dev_tmp = device_find(dev->id->type, dev->id->num)) == NULL) {
>> +#if defined(CONFIG_CMD_MTDPARTS_SPREAD)
>> + ? ? ? ? ? ? ? ? ? ? if (s && !strcmp(s, ".spread")) {
>
> No need for the strchr, just do "if (!strcmp(&argv[1][3], ".spread"))".

Thanks for pointing that out -- I see it now.

>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? p = list_entry(dev->parts.next,
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?struct part_info, link);
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? spread_partition(mtd, p, &next_offset);
>> +
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? debug("increased %s to %d bytes\n", p->name,
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p->size);
>> + ? ? ? ? ? ? ? ? ? ? }
>> +#endif
>> ? ? ? ? ? ? ? ? ? ? ? device_add(dev);
>> ? ? ? ? ? ? ? } else {
>> ? ? ? ? ? ? ? ? ? ? ? /* merge new partition with existing ones*/
>> ? ? ? ? ? ? ? ? ? ? ? p = list_entry(dev->parts.next, struct part_info, link);
>> +#if defined(CONFIG_CMD_MTDPARTS_SPREAD)
>> + ? ? ? ? ? ? ? ? ? ? if (s && !strcmp(s, ".spread")) {
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? spread_partition(mtd, p, &next_offset);
>> +
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? debug("increased %s to %d bytes\n", p->name,
>> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p->size);
>> + ? ? ? ? ? ? ? ? ? ? }
>> +#endif
>
> Don't duplicate this on both sides of the "if"; instead do something like:
>
> p = list_entry(dev->parts.next...);
>
> if (!strcmp(&argv[1][3], ".spread"))
> ? ? ? ?spread_partition(mtd, p, &next_offset);
>
> if ((dev_tmp = ...) {
> ? ? ? ?device_add(dev);
> } else if (part_add(dev_tmp, p)) {
> ? ? ? ?device_del(dev);
> ? ? ? ?return 1;
> }

Ok, I'll give it a shot.

Thank you again for your review and detailed comments. I appreciate
you taking the time to help me get these patches prepared. I will
integrate your comments on patches 2-4 shortly.

Best Regards,
Ben Gardiner

---
Nanometrics Inc.