From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751568AbWH3U4O (ORCPT ); Wed, 30 Aug 2006 16:56:14 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751565AbWH3U4O (ORCPT ); Wed, 30 Aug 2006 16:56:14 -0400 Received: from e1.ny.us.ibm.com ([32.97.182.141]:2180 "EHLO e1.ny.us.ibm.com") by vger.kernel.org with ESMTP id S1751559AbWH3U4N (ORCPT ); Wed, 30 Aug 2006 16:56:13 -0400 Message-ID: <44F5FB54.5010700@us.ibm.com> Date: Wed, 30 Aug 2006 13:55:48 -0700 From: "Darrick J. Wong" Reply-To: "Darrick J. Wong" Organization: IBM User-Agent: Thunderbird 1.5.0.5 (X11/20060728) MIME-Version: 1.0 To: Linux Kernel Mailing List , linux-scsi@vger.kernel.org, Alexis Bruemmer , Mike Anderson , Konrad Rzeszutek Subject: [PATCH v3] aic94xx: Increase can_queue for better performance References: <20060830190454.28371.qmail@web31807.mail.mud.yahoo.com> In-Reply-To: <20060830190454.28371.qmail@web31807.mail.mud.yahoo.com> X-Enigmail-Version: 0.94.0.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Hi all, Below is a patch that sets can_queue in the aic94xx driver's scsi_host to better performing values than what's there currently. It seems that asd_ha->seq.can_queue reflects the number of requests that can be queued per controller; so long as there's one scsi_host per controller, it seems logical that the scsi_host ought to have the same can_queue value. To the best of my (still limited) knowledge, this method provides the correct value. The effect of leaving this value set to 1 is terrible performance in the case of either (a) certain Maxtor SAS drives flying solo or (b) flooding several disks with I/O simultaneously (md-raid). There may be more scenarios where we see similar problems that I haven't uncovered. --D Signed-off-by: Darrick J. Wong diff --git a/drivers/scsi/aic94xx/aic94xx_init.c b/drivers/scsi/aic94xx/aic94xx_init.c index 3e25e31..5c6d457 100644 --- a/drivers/scsi/aic94xx/aic94xx_init.c +++ b/drivers/scsi/aic94xx/aic94xx_init.c @@ -623,6 +623,8 @@ static int __devinit asd_pci_probe(struc asd_ha->hw_prof.bios.present ? "build " : "not present", asd_ha->hw_prof.bios.bld); + shost->can_queue = asd_ha->seq.can_queue; + if (use_msi) pci_enable_msi(asd_ha->pcidev);