ubiattach reserves too many BEBs for each volume attached
Sascha Hauer
sha at pengutronix.de
Fri Feb 11 07:36:30 PST 2022
On Fri, Feb 11, 2022 at 04:23:46PM +0100, wodev at progra.biz.pl wrote:
> If there is more than one volume on the device, ubiattach reserves amount of
> BEBs as for the whole device, each time. Small volumes can be covered mainly
> by reserved blocks on big devices.
> With this the amount of BEBs is proportional to the volume size.
This is done on purpose, see the comment above the place you changed:
/*
* 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).
*/
Sascha
>
> ---
> drivers/mtd/ubi/build.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
> index 94b4231..54e16f1 100644
> --- a/drivers/mtd/ubi/build.c
> +++ b/drivers/mtd/ubi/build.c
> @@ -237,7 +237,7 @@ static int get_bad_peb_limit(const struct ubi_device
> *ubi, int max_beb_per1024)
> else
> device_size = ubi->mtd->size;
>
> - device_pebs = mtd_div_by_eb(device_size, ubi->mtd);
> + device_pebs = mtd_div_by_eb(ubi->mtd->size, ubi->mtd);
> limit = mult_frac(device_pebs, max_beb_per1024, 1024);
>
> /* Round it up */
> --
> 2.35.1
>
> Regards,
> Michał
>
> _______________________________________________
> barebox mailing list
> barebox at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
More information about the barebox
mailing list