> -----Original Message----- > From: Kai Makisara [mailto:Kai.Makisara@xxxxxxxxxxx] > Sent: Thursday, December 02, 2010 9:53 PM > To: Desai, Kashyap > Cc: Lukas Kolbe; Boaz Harrosh; linux-scsi@xxxxxxxxxxxxxxx > Subject: RE: After memory pressure: can't read from tape anymore > > On Thu, 2 Dec 2010, Desai, Kashyap wrote: > > > > > > > > -----Original Message----- > > > From: Lukas Kolbe [mailto:lkolbe@xxxxxxxxxxxxxxxxxxxxxxxx] > > > Sent: Wednesday, December 01, 2010 3:10 PM > > > To: Kai Makisara > > > Cc: Boaz Harrosh; linux-scsi@xxxxxxxxxxxxxxx; Desai, Kashyap > > > Subject: Re: After memory pressure: can't read from tape anymore > > > > > > Am Dienstag, den 30.11.2010, 21:53 +0200 schrieb Kai Makisara: > > > > On Tue, 30 Nov 2010, Boaz Harrosh wrote: > > > > > > I'm Cc'ing Desay Kashyap from LSI, maybe he can comment on the > hardware > > > limitations of the SAS1068E? > > Lukas, > > > > No. it is not limitation from h/w that " CONFIG_FUSION_MAX_SGE" needs > to be 128. > > But our code is written such a way that even if you change it more > than 128, it will fall down to 128 again. > > > > To change this value you need to do below changes in mptbase.h > > > > -- > > -#define MPT_SCSI_SG_DEPTH CONFIG_FUSION_MAX_SGE > > +#define MPT_SCSI_SG_DEPTH 256 > > -- > > > > 128 is good amount for Scatter gather element. This value is standard > value for MPT FUSIION, since long. > > > > This value will be reflect to sg_tablesize and linux scatter-gather > module will use this value for creating sg_table for HBA. > > See: " cat /sys/class/scsi_host/host<x>/sg_tablesize" > > > > If single IO is not able to fit into sg_tablesize, then it will be > converted into multiple IOs for Low Layer Drivers(By "scatter-gather" > module of linux). > > So I do not see any problem with > > CONFIG_FUSION_MAX_SGE value. Our driver internally convert sglist > into SGE which understood by LSI H/W. > > > You can't convert write of one block into multiple IOs. If someone > wants > to write 2 MB blocks, the system must transfer 2 MB in one IO. The > choices > are: I am not sure why single IO cannot be converted into multiple "IO" request. If you run below commands " sg_dd if=/dev/zero of=/dev/sdb bs=4800000 count=1" You will see multiple IOs(requests) are coming to low layer driver. > > 1. Direct I/O from user space. With 4 kB page size, this means that 513 > s/g segments (512 if the user buffer page is aligned) must be used. > (Unless there is an IOMMU and an API for an ULD to use it.) > > 2. Use a bounce buffer. Dynamic allocation of the bounce buffer with a > small number of segments is problematic when the system has been > running > for a long time but the buffer can be allocated when the device is > detected. (This is problematic if the device is detected at run-time.) > > I don't know which alternative is more efficient from the HW point of > view > if both are possible. Do you (or someone else) have any opinion on > this? Regarding above things, I am not sure too, why this has to be part of Low level driver? It has to be done my block layer.... > > Kai -- 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