ext4: use s_inodes_per_block directly in __ext4_get_inode_loc
authorTao Ma <boyu.mt@taobao.com>
Mon, 9 May 2011 14:26:41 +0000 (10:26 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Mon, 9 May 2011 14:26:41 +0000 (10:26 -0400)
In __ext4_get_inode_loc, we calculate inodes_per_block every time by
EXT4_BLOCK_SIZE(sb) / EXT4_INODE_SIZE(sb).  AFAICS, this function is a
hot path for ext4, so we'd better use s_inodes_per_block directly
instead of calculating every time.

Signed-off-by: Tao Ma <boyu.mt@taobao.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
fs/ext4/inode.c

index f2fa5e8a582caf92dba32df3cfad714920a85721..3424e82392ad5a7643efc1867772cdafbfa29b1b 100644 (file)
@@ -4617,7 +4617,7 @@ static int __ext4_get_inode_loc(struct inode *inode,
        /*
         * Figure out the offset within the block group inode table
         */
-       inodes_per_block = (EXT4_BLOCK_SIZE(sb) / EXT4_INODE_SIZE(sb));
+       inodes_per_block = EXT4_SB(sb)->s_inodes_per_block;
        inode_offset = ((inode->i_ino - 1) %
                        EXT4_INODES_PER_GROUP(sb));
        block = ext4_inode_table(sb, gdp) + (inode_offset / inodes_per_block);