Thread (3 messages) 3 messages, 2 authors, 2022-06-23

Re: [PATCH] md/raid5: Fix divide type in raid5_make_request()

From: Logan Gunthorpe <logang@deltatee.com>
Date: 2022-06-23 18:08:39
Also in: lkml


On 2022-06-23 11:15, Song Liu wrote:
On Thu, Jun 23, 2022 at 9:56 AM Logan Gunthorpe [off-list ref] wrote:
quoted
0day reports a build failure on the hexagon architecture:

  ld.lld: error: undefined symbol: __hexagon_udivdi3
     referenced by raid5.c
        md/raid5.o:(raid5_make_request) in archive drivers/built-in.a
     referenced by raid5.c
        md/raid5.o:(raid5_make_request) in archive drivers/built-in.a
     did you mean: __hexagon_udivsi3
        defined in: arch/hexagon/built-in.a(lib/udivsi3.o)

This is caused by using DIV_ROUND_UP on a sector_t type.

The actual value is known to be less than 256 so a wide 64bit divide
here is not desirable. Thus cast the argument to an int to ensure it
uses a 32bit divide.
I force pushed an update that uses DIV_ROUND_UP_SECTOR_T instead.
I guess that should also work?
Ah, yes, that'll also fix the bug. I chose to cast to minimize the
performance impact of an unnecessarily wide divide. But I don't have any
strong basis to suggest the performance will be worse with the wider
division. So fix it whichever way you think is best.

Logan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help