diff options
author | Aaron Pace <Aaron.Pace@alcatel-lucent.com> | 2010-07-26 14:24:44 -0600 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2010-08-07 22:44:08 +0200 |
commit | a2740dd00da52874d71269eaa06cf4bde549d2fe (patch) | |
tree | 4280886e44690a636f5c070e282e2e8badbdd6c1 /fs/ext2 | |
parent | c519facc645812c6d174c2d5b60241d23e285642 (diff) | |
download | u-boot-a2740dd00da52874d71269eaa06cf4bde549d2fe.tar.gz u-boot-a2740dd00da52874d71269eaa06cf4bde549d2fe.tar.xz u-boot-a2740dd00da52874d71269eaa06cf4bde549d2fe.zip |
ext2fs: Fix optimization bug for doubly-indirect block pointers
Doubly-indirect block numbers are compared against the first-level
indirect block when checking for a cached copy. This is causing the
doubly-indirect block to be re-read each time it is accessed.
Repairing this reduces load time for a 70M file from 72 seconds
to 38 seconds.
Signed-off-by: Aaron Pace <Aaron.Pace@alcatel-lucent.com>
Diffstat (limited to 'fs/ext2')
-rw-r--r-- | fs/ext2/ext2fs.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/ext2/ext2fs.c b/fs/ext2/ext2fs.c index 4b391d60a8..a88cf87041 100644 --- a/fs/ext2/ext2fs.c +++ b/fs/ext2/ext2fs.c @@ -364,7 +364,7 @@ static int ext2fs_read_block (ext2fs_node_t node, int fileblock) { indir2_size = blksz; } if ((__le32_to_cpu (indir1_block[rblock / perblock]) << - log2_blksz) != indir1_blkno) { + log2_blksz) != indir2_blkno) { status = ext2fs_devread (__le32_to_cpu(indir1_block[rblock / perblock]) << log2_blksz, 0, blksz, (char *) indir2_block); |