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

Lin Ming
2012-03-22T15:28:53Z

On Thu, Mar 22, 2012 at 7:24 PM, Sergei Shtylyov <sshtylyov@mvista.com> wrote:
> Hello.
>
>
> 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?

Yes, my typo.

>
>
>> to refer to the real DMA device.
>
>
>> Use ->dma_device in __scsi_alloc_queue to correctly set segment
>> boundary.
>
>
>> 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.

Good idea.

Will split and resend.

Thanks,
Lin Ming

>
>
>> 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>
>
> [...]
>
>
>> 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@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html