Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753197Ab1DQBpD (ORCPT ); Sat, 16 Apr 2011 21:45:03 -0400 Received: from mga09.intel.com ([134.134.136.24]:45401 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751364Ab1DQBoz (ORCPT ); Sat, 16 Apr 2011 21:44:55 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.64,225,1301900400"; d="scan'208";a="734472981" Date: Sun, 17 Apr 2011 09:44:30 +0800 From: Wu Fengguang To: "sedat.dilek@gmail.com" Cc: Andrew Morton , Jan Kara , Christoph Hellwig , Trond Myklebust , Dave Chinner , "Theodore Ts'o" , Chris Mason , Peter Zijlstra , Mel Gorman , Rik van Riel , KOSAKI Motohiro , Greg Thelen , Minchan Kim , Vivek Goyal , Andrea Righi , Balbir Singh , linux-mm , "linux-fsdevel@vger.kernel.org" , LKML Subject: Re: [PATCH 00/12] IO-less dirty throttling v7 Message-ID: <20110417014430.GA9419@localhost> References: <20110416132546.765212221@intel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="NzB8fVQJ5HfG6fxh" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2933 Lines: 94 --NzB8fVQJ5HfG6fxh Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hi Sedat, On Sun, Apr 17, 2011 at 12:27:58AM +0800, Sedat Dilek wrote: > I pulled your tree into linux-next (next-20110415) on an i386 Debian host. > > My build breaks here: > ... > MODPOST vmlinux.o > GEN .version > CHK include/generated/compile.h > UPD include/generated/compile.h > CC init/version.o > LD init/built-in.o > LD .tmp_vmlinux1 > mm/built-in.o: In function `bdi_position_ratio': > page-writeback.c:(.text+0x5c83): undefined reference to `__udivdi3' Yes it can be fixed by the attached patch. > mm/built-in.o: In function `calc_period_shift.part.10': > page-writeback.c:(.text+0x6446): undefined reference to `____ilog2_NaN' I cannot reproduce this error. In the git tree, calc_period_shift() is actually quite simple: static int calc_period_shift(void) { return 2 + ilog2(default_backing_dev_info.avg_write_bandwidth); } where avg_write_bandwidth is of type "unsigned long". > make[4]: *** [.tmp_vmlinux1] Error > > BTW, which kernel-config options have to be set besides > CONFIG_BLK_DEV_THROTTLING=y? No. I used your kconfig on 2.6.39-rc3 and it compiles OK for i386. I've pushed two patches into the git tree fixing the compile errors. Thank you for trying it out and report! Thanks, Fengguang --NzB8fVQJ5HfG6fxh Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=bdi_position_ratio-__udivdi3-fix Subject: writeback: i386 compile fix Date: Sun Apr 17 09:04:44 CST 2011 mm/built-in.o: In function `bdi_position_ratio': page-writeback.c:(.text+0x5c83): undefined reference to `__udivdi3' mm/built-in.o: In function `calc_period_shift.part.10': page-writeback.c:(.text+0x6446): undefined reference to `____ilog2_NaN' make[4]: *** [.tmp_vmlinux1] Error Reported-by: Sedat Dilek Signed-off-by: Wu Fengguang --- mm/page-writeback.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- linux-next.orig/mm/page-writeback.c 2011-04-17 09:02:32.000000000 +0800 +++ linux-next/mm/page-writeback.c 2011-04-17 09:03:58.000000000 +0800 @@ -634,9 +634,10 @@ static unsigned long bdi_position_ratio( origin = bdi->avg_write_bandwidth + 2 * MIN_WRITEBACK_PAGES; origin = min(origin, thresh - thresh / DIRTY_FULL_SCOPE); if (bdi_dirty < origin) { - if (bdi_dirty > origin / 4) - bw = bw * origin / bdi_dirty; - else + if (bdi_dirty > origin / 4) { + bw *= origin; + do_div(bw, bdi_dirty); + } else bw = bw * 4; } --NzB8fVQJ5HfG6fxh-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/