drivers/target/target_core_transport.c breakage on i386
In commit ec98f7825c6eaa4a9afb0eb518826efc8a2ed4a2
Author: Andy Grover <[email protected]> Date: Wed Jul 20 19:28:46 2011 +0000
target: Eliminate usage of struct se_mem
we got
+ task_count = DIV_ROUND_UP(sectors, dev_max_sectors);
and that's sector_t/sector_t. 64bit division on i386 is no-no in the kernel - it emits __udivdi3 call and it's not there. Can sectors really reach 2^32 here?
Quoted 4 lines · Al Viro
In commit
ec98f7825c6eaa4a9afb0eb518826efc8a2ed4a2Author: Andy Grover <[email protected]> Date: Wed Jul 20 19:28:46 2011 +0000
Quoted 8 lines
target: Eliminate usage of struct
se_memwe got
+task_count=DIV_ROUND_UP(sectors, dev_max_sectors);
and that's sector_t/sector_t. 64bit division on i386 is no-no in the kernel - it emits__udivdi3call and it's not there. Can sectors really reach 2^32 here?
Hi Al,
Just a heads up that this was caught this before -rc1, and we ended up adding DIV_ROUND_UP_ULL using do_div() for the 32-bit case here, and another DIV_ROUND_UP_SECTOR_T macro that target_core_transport.c is now using to address this for i386.
kernel.h: Add DIV_ROUND_UP_ULL and DIV_ROUND_UP_SECTOR_T macro usage
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff_plain;h=36a26c69b4c70396ef569c3452690fba0c1dec08
Thanks,
--nab