Hi Artem, Richard, On Wed, 15 Aug 2012 18:08:51 +0300 Artem Bityutskiy <dedeki...@gmail.com> wrote: > 1. Invalid blocks are block that contain one or more bad bits beyond > ECC.
I would remove this one sentence from the log, it is misleading; invalid blocks are not necessarily related to ECC. > if (CONFIG_MTD_UBI_BEB_LIMIT > 0) { > - int percent = CONFIG_MTD_UBI_BEB_LIMIT; > - int limit = mult_frac(ubi->peb_count, percent, 100); > + int per1024 = CONFIG_MTD_UBI_BEB_LIMIT; > + int limit, device_pebs; > + uint64_t device_size; > + > + /* > + * Here we are using size of the entire flash chip and > + * not just the MTD partition size because the maximum > + * number of bad eraseblocks is a percentage of the > + * whole device and bad eraseblocks are not fairly > + * distributed over the flash chip. So the worst case > + * is that all the bad eraseblocks of the chip are in > + * the MTD partition we are attaching (ubi->mtd). > + */ > + device_size = mtd_get_device_size(ubi->mtd); > + device_pebs = mtd_div_by_eb(device_size, ubi->mtd); > + limit = mult_frac(device_pebs, per1024, 1024); > > /* Round it up */ > - if (mult_frac(limit, 100, percent) < ubi->peb_count) > + if (mult_frac(limit, 1024, per1024) < ubi->peb_count) Oops... should be: + if (mult_frac(limit, 1024, per1024) < device_pebs) Regards, Shmulik -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/