[PATCH 0/8] u-boot: fs: add generic unaligned read handling
Tom Rini
trini at konsulko.com
Tue Jun 28 16:17:08 CEST 2022
On Tue, Jun 28, 2022 at 03:28:00PM +0800, Qu Wenruo wrote:
> [BACKGROUND]
> Unlike FUSE/Kernel which always pass aligned read range, U-boot fs code
> just pass the request range to underlying fses.
>
> Under most case, this works fine, as U-boot only really needs to read
> the whole file (aka, 0 for both offset and len, len will be later
> determined using file size).
>
> But if some advanced user/script wants to extract kernel/initramfs from
> combined image, we may need to do unaligned read in that case.
>
> [ADVANTAGE]
> This patchset will handle unaligned read range in _fs_read():
>
> - Get blocksize of the underlying fs
>
> - Read the leading block contianing the unaligned range
> The full block will be stored in a local buffer, then only copy
> the bytes in the unaligned range into the destination buffer.
>
> If the first block covers the whole range, we just call it aday.
>
> - Read the aligned range if there is any
>
> - Read the tailing block containing the unaligned range
> And copy the covered range into the destination.
>
> [DISADVANTAGE]
> There are mainly two problems:
>
> - Extra memory allocation for every _fs_read() call
> For the leading and tailing block.
>
> - Extra path resolving
> All those supported fs will have to do extra path resolving up to 2
> times (one for the leading block, one for the tailing block).
> This may slow down the read.
This conceptually seems like a good thing. Can you please post some
before/after times of reading large images from the supported
filesystems?
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20220628/e30ee2bf/attachment.sig>
More information about the U-Boot
mailing list