Re: [PATCH v2] add bidi support for block pc requests

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

 



On Sun, 2007-06-03 at 10:45 +0300, Boaz Harrosh wrote:
> Jeff Garzik wrote:
> > Boaz Harrosh wrote:
> >> FUJITA Tomonori wrote:
> >>> From: Boaz Harrosh <bharrosh@xxxxxxxxxxx>
> >>> Subject: Re: [PATCH v2] add bidi support for block pc requests
> >>> Date: Thu, 17 May 2007 17:00:21 +0300
> >>>
> >>>> Yes Tomo found it at ata_scsi_slave_config(). Attached below the way I
> >>>> fixed it. Now it works with 127.
> >>> I think that we can just remove blk_queue_max_phys_segments since the
> >>> ata drivers seem to set sg_tablesize to LIBATA_MAX_PRD.
> >>>
> >> Who should send a patch upstream? (I cc'ed Jeff Garzik)
> >>
> >> Boaz
> >>
> >> diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
> >> index dd81fa7..3660f3e 100644
> >> --- a/drivers/ata/libata-scsi.c
> >> +++ b/drivers/ata/libata-scsi.c
> >> @@ -800,8 +800,6 @@ int ata_scsi_slave_config(struct scsi_device *sdev)
> >>
> >>  	ata_scsi_sdev_config(sdev);
> >>
> >> -	blk_queue_max_phys_segments(sdev->request_queue, LIBATA_MAX_PRD);
> >> -
> >>  	sdev->manage_start_stop = 1;
> > 
> > I don't mind the patch, but could someone refresh me as to the context?
> > 
> > Is there something wrong with the above code, or is it simply redundant 
> > to the scsi_host_template settings in each LLDD?
> > 
> > 	Jeff
> > 
> > 
> > 
> 
> Hi Jeff
> What happens is that if SCSI-ml sets an higher value than LIBATA_MAX_PRD (=128)
> than every thing is OK and libata-scsi will only see its LIBATA_MAX_PRD. But what
> happens if SCSI-ml sets a lower value? It will than crash on unexpected high sg
> count. My first Patch was an "if >" but Tomo said that it is redundant since
> drivers do that already. So I guess it is your call. Can it be removed or we need
> a: if ( sdev->request_queue->max_phys_segments > LIBATA_MAX_PRD)

Ordinarily, in SCSI, phys_segments is the wrong thing for a driver to
set because what a driver wants to see is what comes out the other side
of dma_map_sg() (which is controlled by hw_segments) not what goes in.
However, I could see libata having an interest in the phys_segments if
the physical region descriptors are going to the device via PIO ... is
that what this is for?

James


-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux