diff options
author | Alexander V. Lukyanov <lav@netis.ru> | 2011-02-21 21:33:21 -0500 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2011-02-21 21:33:21 -0500 |
commit | 5dbd571d875d73e087c1eeb3d840cfc653a97422 (patch) | |
tree | dfad6885fad57fb45f3e1d37d3d2d56fd6c320b0 /fs/ext4 | |
parent | 7dc576158d7e5cdff3349f78598fdb4080536342 (diff) |
ext4: allow inode_readahead_blks=0 (linux-2.6.37)
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.
Signed-off-by: Alexander V. Lukyanov <lav@netis.ru>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/super.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c index ef83457fd4ea..a1ac24b6a758 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c | |||
@@ -1771,7 +1771,7 @@ set_qf_format: | |||
1771 | return 0; | 1771 | return 0; |
1772 | if (option < 0 || option > (1 << 30)) | 1772 | if (option < 0 || option > (1 << 30)) |
1773 | return 0; | 1773 | return 0; |
1774 | if (!is_power_of_2(option)) { | 1774 | if (option && !is_power_of_2(option)) { |
1775 | ext4_msg(sb, KERN_ERR, | 1775 | ext4_msg(sb, KERN_ERR, |
1776 | "EXT4-fs: inode_readahead_blks" | 1776 | "EXT4-fs: inode_readahead_blks" |
1777 | " must be a power of 2"); | 1777 | " must be a power of 2"); |
@@ -2412,7 +2412,7 @@ static ssize_t inode_readahead_blks_store(struct ext4_attr *a, | |||
2412 | if (parse_strtoul(buf, 0x40000000, &t)) | 2412 | if (parse_strtoul(buf, 0x40000000, &t)) |
2413 | return -EINVAL; | 2413 | return -EINVAL; |
2414 | 2414 | ||
2415 | if (!is_power_of_2(t)) | 2415 | if (t && !is_power_of_2(t)) |
2416 | return -EINVAL; | 2416 | return -EINVAL; |
2417 | 2417 | ||
2418 | sbi->s_inode_readahead_blks = t; | 2418 | sbi->s_inode_readahead_blks = t; |