> -----Original Message----- > From: FUJITA Tomonori [mailto:fujita.tomonori@xxxxxxxxxxxxx] > Sent: Friday, December 03, 2010 3:43 PM > To: Kai.Makisara@xxxxxxxxxxx > Cc: Desai, Kashyap; lkolbe@xxxxxxxxxxxxxxxxxxxxxxxx; > bharrosh@xxxxxxxxxxx; linux-scsi@xxxxxxxxxxxxxxx > Subject: RE: After memory pressure: can't read from tape anymore > > On Thu, 2 Dec 2010 18:22:33 +0200 (EET) > Kai Makisara <Kai.Makisara@xxxxxxxxxxx> wrote: > > > > -#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'm not sure that Kashyap is talking about multiple IO requests. > > SGE is LSI H/W's data structure to describe the set of a dma address > and a transfer length. LSI H/W can chain SGE so if you pass large > scatter-gather to the driver, it leads to single SCSI command with > changed multiple SGEs. I suppose mpt2sas can handle more than 256 > scatter gatters. Let me add some more input. I do not see any problem with any parameters in driver is playing role in this issue. As earlier suggested by Kai, they think changing " CONFIG_FUSION_MAX_SGE" will help. But I see maximum value for " CONFIG_FUSION_MAX_SGE" is 128 only and we can not go beyond this. I see scsi_alloc_queue below lines blk_queue_max_hw_segments(q, shost->sg_tablesize); blk_queue_max_phys_segments(q, SCSI_MAX_SG_CHAIN_SEGMENTS); both the values play role while selecting max scatter gather elements.. Where max_hw_segements are equal to value of " CONFIG_FUSION_MAX_SGE", but max_phys_segements are limited to below value #define SCSI_MAX_SG_SEGMENTS 128 (defined in scsi.h) Even for mpt2sas " SCSI_MPT2SAS_MAX_SGE" is 128. -- 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