From: "Alexander V. Lukyanov" Subject: [PATCH] ext4: allow inode_readahead_blks=0 (linux-2.6.37) Date: Tue, 8 Feb 2011 09:39:25 +0300 Message-ID: <20110208063925.GA13619@lw.yar.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: "Theodore Ts'o" , Andreas Dilger , linux-kernel@vger.kernel.org To: linux-ext4@vger.kernel.org Return-path: Received: from lav-w.yar.ru ([193.233.48.101]:48508 "EHLO localhost.localdomain" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751108Ab1BHGyf (ORCPT ); Tue, 8 Feb 2011 01:54:35 -0500 Content-Disposition: inline Sender: linux-ext4-owner@vger.kernel.org List-ID: 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 -- Alexander.