Re: [GIT PULL] iscsi-target merge for v3.1-rc1

Nicholas A. Bellinger
2011-07-26T00:42:24Z

On Mon, 2011-07-25 at 16:37 -0700, Andrew Morton wrote:
> On Sat, 23 Jul 2011 16:16:15 -0700
> "Nicholas A. Bellinger" <nab@linux-iscsi.org> wrote:
>
> > Please go ahead and pull from:
> >
> > master.kernel.org:/pub/scm/linux/kernel/git/nab/target-pending.git for-linus-merge
>
> i386 allyesconfig:
>
> ERROR: "__udivdi3" [drivers/target/target_core_mod.ko] undefined!
>
> somewhere in drivers/target/target_core_transport.c:transport_allocate_data_tasks().

Mmmm, I was under the assumption that DIV_ROUND_UP() did unsigned long
long division correctly for sector_t on 32-bit , but apparently not with
the new v4.1 transport_allocate_data_tasks() code.. Andy..?

Once upon a time we used the following __udivdi3() and __umoddi3()
wrappers around do_div() to handle this instruction in target_core_mod
for 32-bit, but we ended up removing these during the .38 merge in favor
of IIRC direct do_div() usage. These wrappers are still in use for LIO
backports on 32-bit x86 and arm however..

So I'll go ahead and make sure this works on i386 with lio-core-2.6.git
shortly, and double check __udivdi3() usage with iscsi-target in
for-next. Andrew and Christoph, did have any input on a preffered
method of handling this case in the new v4.1 DIV_ROUND_UP() usage..?

Thank you!

--nab