Discussion:
[PATCH][SCSI] mpt2sas: fix undefined reference to `__udivdi3' compilation errors
Sreekanth Reddy
2014-09-19 06:47:27 UTC
Permalink
This patch will fix the below compilation errors on i386 ARCH

drivers/built-in.o: In function `_scsih_qcmd':
mpt2sas_scsih.c:(.text+0x1e7b56): undefined reference to `__udivdi3'
mpt2sas_scsih.c:(.text+0x1e7b8a): undefined reference to `__umoddi3'

Used sector_div() API to fix above compilation errors.

Signed-off-by: Sreekanth Reddy <***@avagotech.com>
---
drivers/scsi/mpt2sas/mpt2sas_scsih.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
index 992a224..c80ed04 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
@@ -3860,7 +3860,7 @@ _scsih_setup_direct_io(struct MPT2SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
struct _raid_device *raid_device, Mpi2SCSIIORequest_t *mpi_request,
u16 smid)
{
- sector_t v_lba, p_lba, stripe_off, stripe_unit, column, io_size;
+ sector_t v_lba, p_lba, stripe_off, column, io_size;
u32 stripe_sz, stripe_exp;
u8 num_pds, cmd = scmd->cmnd[0];

@@ -3888,9 +3888,9 @@ _scsih_setup_direct_io(struct MPT2SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,

num_pds = raid_device->num_pds;
p_lba = v_lba >> stripe_exp;
- stripe_unit = p_lba / num_pds;
- column = p_lba % num_pds;
- p_lba = (stripe_unit << stripe_exp) + stripe_off;
+ column = sector_div(p_lba, num_pds);
+ p_lba = (p_lba << stripe_exp) + stripe_off;
+
mpi_request->DevHandle = cpu_to_le16(raid_device->pd_handle[column]);

if (cmd == READ_10 || cmd == WRITE_10)
--
2.0.2
Christoph Hellwig
2014-09-22 11:16:33 UTC
Permalink
Looks good to me. Can I get a quick second review?
Post by Sreekanth Reddy
This patch will fix the below compilation errors on i386 ARCH
mpt2sas_scsih.c:(.text+0x1e7b56): undefined reference to `__udivdi3'
mpt2sas_scsih.c:(.text+0x1e7b8a): undefined reference to `__umoddi3'
Used sector_div() API to fix above compilation errors.
---
drivers/scsi/mpt2sas/mpt2sas_scsih.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/mpt2sas/mpt2sas_scsih.c b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
index 992a224..c80ed04 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_scsih.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_scsih.c
@@ -3860,7 +3860,7 @@ _scsih_setup_direct_io(struct MPT2SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
struct _raid_device *raid_device, Mpi2SCSIIORequest_t *mpi_request,
u16 smid)
{
- sector_t v_lba, p_lba, stripe_off, stripe_unit, column, io_size;
+ sector_t v_lba, p_lba, stripe_off, column, io_size;
u32 stripe_sz, stripe_exp;
u8 num_pds, cmd = scmd->cmnd[0];
@@ -3888,9 +3888,9 @@ _scsih_setup_direct_io(struct MPT2SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
num_pds = raid_device->num_pds;
p_lba = v_lba >> stripe_exp;
- stripe_unit = p_lba / num_pds;
- column = p_lba % num_pds;
- p_lba = (stripe_unit << stripe_exp) + stripe_off;
+ column = sector_div(p_lba, num_pds);
+ p_lba = (p_lba << stripe_exp) + stripe_off;
+
mpi_request->DevHandle = cpu_to_le16(raid_device->pd_handle[column]);
if (cmd == READ_10 || cmd == WRITE_10)
--
2.0.2
---end quoted text---
Martin K. Petersen
2014-09-22 13:42:49 UTC
Permalink
Sreekanth> This patch will fix the below compilation errors on i386 ARCH
Sreekanth> drivers/built-in.o: In function `_scsih_qcmd':
Sreekanth> mpt2sas_scsih.c:(.text+0x1e7b56): undefined reference to
Sreekanth> `__udivdi3' mpt2sas_scsih.c:(.text+0x1e7b8a): undefined
Sreekanth> reference to `__umoddi3'

Sreekanth> Used sector_div() API to fix above compilation errors.

Reviewed-by: Martin K. Petersen <***@oracle.com>
--
Martin K. Petersen Oracle Linux Engineering
Loading...