Re: [PATCH 00/12] IO-less dirty throttling v7

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
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 <sedat.dilek@xxxxxxxxxxxxxx>
Signed-off-by: Wu Fengguang <fengguang.wu@xxxxxxxxx>
---
 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;
 	}
 

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]