From patchwork Tue Feb 8 06:39:25 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Alexander V. Lukyanov" X-Patchwork-Id: 82260 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 6C2E8B7088 for ; Tue, 8 Feb 2011 17:54:39 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751876Ab1BHGyg (ORCPT ); Tue, 8 Feb 2011 01:54:36 -0500 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 X-Greylist: delayed 886 seconds by postgrey-1.27 at vger.kernel.org; Tue, 08 Feb 2011 01:54:34 EST Received: from localhost.localdomain (lw [127.0.0.1]) by localhost.localdomain (8.14.4/8.14.4) with ESMTP id p186dQqK013672; Tue, 8 Feb 2011 09:39:27 +0300 Received: (from lav@localhost) by localhost.localdomain (8.14.4/8.14.4/Submit) id p186dQxI013670; Tue, 8 Feb 2011 09:39:26 +0300 X-Authentication-Warning: localhost.localdomain: lav set sender to lav@netis.ru using -f Date: Tue, 8 Feb 2011 09:39:25 +0300 From: "Alexander V. Lukyanov" To: linux-ext4@vger.kernel.org Cc: "Theodore Ts'o" , Andreas Dilger , linux-kernel@vger.kernel.org Subject: [PATCH] ext4: allow inode_readahead_blks=0 (linux-2.6.37) Message-ID: <20110208063925.GA13619@lw.yar.ru> MIME-Version: 1.0 Content-Disposition: inline User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-ext4-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org 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. Signed-off-by: Alexander V. Lukyanov --- 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;