Commit 6f381fa344911d5a234b13574433cf23036f9467

Authored by Lin Ming
Committed by James Bottomley
1 parent c6f5c93098

[SCSI] scsi_lib: use correct DMA device in __scsi_alloc_queue

Currently, __scsi_alloc_queue uses SCSI host's parent device
as DMA device to set segment boundary. But the parent device may not
refer to the DMA device. For example, for ATA disk, SCSI host's parent
device now refers to ATA port.

Since commit d139b9b([SCSI] scsi_lib_dma: fix bug with dma maps on
nested scsi objects), a new field Scsi_Host->dma_dev was introduced
to refer to the real DMA device.

Use ->dma_dev in __scsi_alloc_queue to correctly set segment
boundary.

Bug report: http://marc.info/?l=linux-ide&m=133177818318187&w=2

Reported-and-tested-by: Jörg Sommer <joerg@alea.gnuu.de>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>

Showing 1 changed file with 1 additions and 1 deletions Side-by-side Diff

drivers/scsi/scsi_lib.c
... ... @@ -1638,7 +1638,7 @@
1638 1638 request_fn_proc *request_fn)
1639 1639 {
1640 1640 struct request_queue *q;
1641   - struct device *dev = shost->shost_gendev.parent;
  1641 + struct device *dev = shost->dma_dev;
1642 1642  
1643 1643 q = blk_init_queue(request_fn, NULL);
1644 1644 if (!q)