[U-Boot] [PATCH v2] ext4fs: Add ext4 extent tree cache

Tom Rini trini at konsulko.com
Sat May 12 01:49:20 UTC 2018


On Fri, May 11, 2018 at 11:09:37AM -0700, evan.g.thompson at gmail.com wrote:

> From: Evan Thompson <evan.thompson at flukenetworks.com>
> 
> In ext4, the file inode can store up to 4 extents. If a file requires
> more (due to size or fragmentation), an extent index tree is used.
> 
> Currently, u-boot reads a node from each level of the extent tree
> for every block read, which is very inefficient when extent tree
> depth is > 0.
> 
> This patch adds a cache for the extent tree. We cache the 1
> most-recently-seen node at each extent tree level. The typical workload
> is sequential block access, so once we leave a given tree node, it will
> not be revisited. Therefore, it makes sense to just cache one node
> per tree level.
> 
> Cached blocks are lazily allocated. The typical case is extent tree
> depth = 0, in which case no caching is needed and no allocations will
> occur.
> 
> For files with extent tree depth = 1, this patch produces a ~10x
> improvement in read speed. For deeper extent trees, the improvement is
> larger. On my test device, a 3MB file which previously took 9s to read
> now takes 150ms.
> 
> Cache size is configurable with CONFIG_EXT4_EXTENT_CACHE_SIZE. However
> the default of 5 (the maximum depth of well-formed extent trees) is
> recommended.
> 
> Signed-off-by: Evan Thompson <evan.thompson at flukenetworks.com>

Reviewed-by: Tom Rini <trini at konsulko.com>

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180511/507e37cc/attachment.sig>


More information about the U-Boot mailing list