From a2740dd00da52874d71269eaa06cf4bde549d2fe Mon Sep 17 00:00:00 2001
From: Aaron Pace <Aaron.Pace@alcatel-lucent.com>
Date: Mon, 26 Jul 2010 14:24:44 -0600
Subject: [PATCH] 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>
---
 fs/ext2/ext2fs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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);