[U-Boot] [U-Boot, v2] ext4fs: Add ext4 extent cache for read operations
Tom Rini
trini at ti.com
Fri Feb 21 20:57:32 CET 2014
On Tue, Feb 04, 2014 at 03:48:10PM +0100, Ionut Nicu wrote:
> In an ext4 filesystem, the inode corresponding to a file has a 60-byte
> area which contains an extent header structure and up to 4 extent
> structures (5 x 12 bytes).
>
> For files that need more than 4 extents to be represented (either files
> larger than 4 x 128MB = 512MB or smaller files but very fragmented),
> ext4 creates extent index structures. Each extent index points to a 4KB
> physical block where one extent header and additional 340 extents could
> be stored.
>
> The current u-boot ext4 code is very inefficient when it tries to load a
> file which has extent indexes. For each logical file block the code will
> read over and over again the same blocks of 4096 bytes from the disk.
>
> Since the extent tree in a file is always the same, we can cache the
> extent structures in memory before actually starting to read the file.
>
> This patch creates a simple linked list of structures holding information
> about all the extents used to represent a file. The list is sorted by
> the logical block number (ee_block) so that we can easily find the
> proper extent information for any file block.
>
> Without this patch, a 69MB file which had just one extent index pointing
> to a block with another 6 extents was read in approximately 3 minutes.
> With this patch applied the same file can be read in almost 20 seconds.
>
> Signed-off-by: Ionut Nicu <ioan.nicu.ext at nsn.com>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20140221/b03e7ac5/attachment.pgp>
More information about the U-Boot
mailing list