Re: [PATCH] [SCSI] scsi_lib: use correct DMA device in __scsi_alloc_queue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


On 22-03-2012 9:52, Lin Ming wrote:

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_device was introduced

   Only the field is named 'dma_dev', isn't it?

to refer to the real DMA device.

Use ->dma_device in __scsi_alloc_queue to correctly set segment

And use scsi_add_host_with_dma in ata_scsi_add_hosts to pass in the
correct DMA device.

   Perhaps this should be split into two patches.

Bug report:

Reported-and-tested-by: Jörg Sommer<joerg@xxxxxxxxxxxx>
Signed-off-by: Lin Ming<ming.m.lin@xxxxxxxxx>

diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c
index f85cfa6..486088b 100644
--- a/drivers/scsi/scsi_lib.c
+++ b/drivers/scsi/scsi_lib.c
@@ -1642,7 +1642,7 @@ struct request_queue *__scsi_alloc_queue(struct Scsi_Host *shost,
  					 request_fn_proc *request_fn)
  	struct request_queue *q;
-	struct device *dev = shost->shost_gendev.parent;
+	struct device *dev = shost->dma_dev;

  	q = blk_init_queue(request_fn, NULL);
  	if (!q)

WBR, Sergei
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at

[SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Photos]     [Yosemite]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

Add to Google Powered by Linux