summaryrefslogtreecommitdiffstats
path: root/fs/ext2
diff options
context:
space:
mode:
authorAaron Pace <Aaron.Pace@alcatel-lucent.com>2010-07-26 14:24:44 -0600
committerWolfgang Denk <wd@denx.de>2010-08-07 22:44:08 +0200
commita2740dd00da52874d71269eaa06cf4bde549d2fe (patch)
tree4280886e44690a636f5c070e282e2e8badbdd6c1 /fs/ext2
parentc519facc645812c6d174c2d5b60241d23e285642 (diff)
downloadu-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.c2
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);