From: Linus Torvalds on


On Thu, 22 Apr 2010, Ingo Molnar wrote:
>
> All 32-bit x86 builds (x86, allyesconfig) that enable RAID are failing with
> this build failure:
>
> drivers/built-in.o: In function `raid5_compute_sector':
> raid5.c:(.text+0x2e42ac): undefined reference to `__umoddi3'
> raid5.c:(.text+0x2e42d8): undefined reference to `__umoddi3'
> raid5.c:(.text+0x2e42ff): undefined reference to `__umoddi3'
> raid5.c:(.text+0x2e4327): undefined reference to `__umoddi3'
> raid5.c:(.text+0x2e4385): undefined reference to `__umoddi3'
> drivers/built-in.o:raid5.c:(.text+0x2e43bc): more undefined references to `__umoddi3' follow
>
> Caused by this commit:
>
> 35f2a59: md/raid5: allow for more than 2^31 chunks.

Gaah, yes.

How about just making it "unsigned long" instead of sector_t, and telling
people that if they have more than 2**32 chunks in their RAID array, they
should damn well use a 64-bit CPU.

The alternative, of course, is to use "sector_div()" everywhere. Neil?

Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Neil Brown on
On Thu, 22 Apr 2010 11:12:41 -0700 (PDT)
Linus Torvalds <torvalds(a)linux-foundation.org> wrote:

>
>
> On Thu, 22 Apr 2010, Ingo Molnar wrote:
> >
> > All 32-bit x86 builds (x86, allyesconfig) that enable RAID are failing with
> > this build failure:
> >
> > drivers/built-in.o: In function `raid5_compute_sector':
> > raid5.c:(.text+0x2e42ac): undefined reference to `__umoddi3'
> > raid5.c:(.text+0x2e42d8): undefined reference to `__umoddi3'
> > raid5.c:(.text+0x2e42ff): undefined reference to `__umoddi3'
> > raid5.c:(.text+0x2e4327): undefined reference to `__umoddi3'
> > raid5.c:(.text+0x2e4385): undefined reference to `__umoddi3'
> > drivers/built-in.o:raid5.c:(.text+0x2e43bc): more undefined references to `__umoddi3' follow
> >
> > Caused by this commit:
> >
> > 35f2a59: md/raid5: allow for more than 2^31 chunks.
>
> Gaah, yes.
>
> How about just making it "unsigned long" instead of sector_t, and telling
> people that if they have more than 2**32 chunks in their RAID array, they
> should damn well use a 64-bit CPU.
>
> The alternative, of course, is to use "sector_div()" everywhere. Neil?

Sorry, using sector_div everywhere is definitely the right thing to do.
Please pull one more patch from

git://neil.brown.name/md/ for-linus

Thanks,
NeilBrown
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/