[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