[PATCH] ext4: allow inode_readahead_blks=0 (linux-2.6.37)

From: Alexander V. Lukyanov
Date: Tue Feb 08 2011 - 01:54:44 EST


Hello!

I cannot disable inode-read-ahead feature of ext4 (on 2.6.37):

# echo 0 > /sys/fs/ext4/sda2/inode_readahead_blks
bash: echo: write error: Invalid argument

On a server with lots of small files and random access this read-ahead makes
performance worse, and I'd like to disable it. I work around this problem
by using value of 1, but it still reads an extra block.

This patch fixes the problem by checking for zero explicitly.

--- a/fs/ext4/super.c.0 2010-11-16 10:48:33.418629215 +0300
+++ b/fs/ext4/super.c 2010-11-16 10:46:07.739753246 +0300
@@ -1657,7 +1657,7 @@ set_qf_format:
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 @@ static ssize_t inode_readahead_blks_stor
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;

Signed-off-by: Alexander V. Lukyanov <lav@xxxxxxxx>

--
Alexander.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/