[PATCH 1/3] UBI: block: Fix block device size setting
Artem Bityutskiy
dedekind1 at gmail.com
Mon Sep 8 03:52:44 PDT 2014
On Fri, 2014-08-29 at 18:42 -0300, Ezequiel Garcia wrote:
> We are currently taking the block device size from the ubi_volume_info.size
> field. However, this is not the amount of data in the volume, but the
> number of reserved physical eraseblocks, and hence leads to an incorrect
> representation of the volume.
>
> In particular, this produces I/O errors on static volumes as the block
> interface may attempt to read unmapped PEBs:
>
> $ cat /dev/ubiblock0_0 > /dev/null
> UBI error: ubiblock_read_to_buf: ubiblock0_0 ubi_read error -22
> end_request: I/O error, dev ubiblock0_0, sector 9536
> Buffer I/O error on device ubiblock0_0, logical block 2384
> [snip]
>
> Fix this by using the ubi_volume_info.used_bytes field which is set to the
> actual number of data bytes for both static and dynamic volumes.
>
> While here, improve the error message to be less stupid and more useful:
> UBI error: ubiblock_read_to_buf: ubiblock0_1 ubi_read error -9 on LEB=0, off=15872, len=512
>
> It's worth noticing that the 512-byte sector representation of the volume
> is only correct if the volume size is multiple of 512-bytes. This is true for
> virtually any NAND device, given eraseblocks and pages are 512-byte multiple
> and hence so is the LEB size.
>
> Fixes: 9d54c8a33eec ("UBI: R/O block driver on top of UBI volumes")
> Signed-off-by: Ezequiel Garcia <ezequiel.garcia at free-electrons.com>
Looks good, do we want this one in stable?
--
Best Regards,
Artem Bityutskiy
More information about the linux-mtd
mailing list