summaryrefslogtreecommitdiff
path: root/fs/ext4/super.c
diff options
context:
space:
mode:
authorAlexander V. Lukyanov <lav@netis.ru>2011-02-22 05:33:21 +0300
committerTheodore Ts'o <tytso@mit.edu>2011-02-22 05:33:21 +0300
commit5dbd571d875d73e087c1eeb3d840cfc653a97422 (patch)
treedfad6885fad57fb45f3e1d37d3d2d56fd6c320b0 /fs/ext4/super.c
parent7dc576158d7e5cdff3349f78598fdb4080536342 (diff)
downloadlinux-5dbd571d875d73e087c1eeb3d840cfc653a97422.tar.xz
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/super.c')
-rw-r--r--fs/ext4/super.c4
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:
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");
@@ -2412,7 +2412,7 @@ static ssize_t inode_readahead_blks_store(struct ext4_attr *a,
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;