Message ID | 20101116080546.GA7949@proxy |
---|---|
State | New, archived |
Headers | show |
On Tue, Nov 16, 2010 at 11:05:46AM +0300, Alexander V. Lukyanov wrote:
> Currently the value 0 is disallowed, as it is not a power of 2.
BTW, the default value inode_readahead_blks=32 gives me troubles: it raises
load average and increases request latency on a busy squid server. I
explain it by random access to large number of files which are present in
the squid cache.
BTW2: the value of 0 should be allowed, it is explicitly used by the code:
/*
* If we need to do any I/O, try to pre-readahead extra
* blocks from the inode table.
*/
if (EXT4_SB(sb)->s_inode_readahead_blks) {
...
}
--- linux-2.6.35/fs/ext4/super.c.0 2010-11-16 10:48:33.418629215 +0300 +++ linux-2.6.35/fs/ext4/super.c 2010-11-16 10:46:07.739753246 +0300 @@ -1657,7 +1657,7 @@ return 0; if (option < 0 || option > (1 << 30)) return 0; - if (!is_power_of_2(option)) { + if (option && !is_power_of_2(option)) { ext4_msg(sb, KERN_ERR, "EXT4-fs: inode_readahead_blks" " must be a power of 2"); @@ -2274,7 +2274,7 @@ if (parse_strtoul(buf, 0x40000000, &t)) return -EINVAL; - if (!is_power_of_2(t)) + if (t && !is_power_of_2(t)) return -EINVAL; sbi->s_inode_readahead_blks = t;