mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-15 09:34:17 +00:00
scsi: aacraid: Set correct Queue Depth for HBA1000 RAW disks
The default queue depth for non NATIVE RAW disks is calculated from the number of fibs and number of disks or a max of 256. This causes poor disk IO performance. The fix is to set default qd based on the type of disks (SATA -32 and SAS -64) Signed-off-by: Raghava Aditya Renukunta <RaghavaAditya.Renukunta@microsemi.com> Reviewed-by: David Carroll <david.carroll@microsemi.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
d58129c96b
commit
58eaffe54b
@ -405,17 +405,23 @@ static int aac_slave_configure(struct scsi_device *sdev)
|
|||||||
int chn, tid;
|
int chn, tid;
|
||||||
unsigned int depth = 0;
|
unsigned int depth = 0;
|
||||||
unsigned int set_timeout = 0;
|
unsigned int set_timeout = 0;
|
||||||
|
bool set_qd_dev_type = false;
|
||||||
|
u8 devtype = 0;
|
||||||
|
|
||||||
chn = aac_logical_to_phys(sdev_channel(sdev));
|
chn = aac_logical_to_phys(sdev_channel(sdev));
|
||||||
tid = sdev_id(sdev);
|
tid = sdev_id(sdev);
|
||||||
if (chn < AAC_MAX_BUSES && tid < AAC_MAX_TARGETS &&
|
if (chn < AAC_MAX_BUSES && tid < AAC_MAX_TARGETS && aac->sa_firmware) {
|
||||||
aac->hba_map[chn][tid].devtype == AAC_DEVTYPE_NATIVE_RAW) {
|
devtype = aac->hba_map[chn][tid].devtype;
|
||||||
depth = aac->hba_map[chn][tid].qd_limit;
|
|
||||||
|
if (devtype == AAC_DEVTYPE_NATIVE_RAW)
|
||||||
|
depth = aac->hba_map[chn][tid].qd_limit;
|
||||||
|
else if (devtype == AAC_DEVTYPE_ARC_RAW)
|
||||||
|
set_qd_dev_type = true;
|
||||||
|
|
||||||
set_timeout = 1;
|
set_timeout = 1;
|
||||||
goto common_config;
|
goto common_config;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (aac->jbod && (sdev->type == TYPE_DISK))
|
if (aac->jbod && (sdev->type == TYPE_DISK))
|
||||||
sdev->removable = 1;
|
sdev->removable = 1;
|
||||||
|
|
||||||
@ -470,16 +476,22 @@ static int aac_slave_configure(struct scsi_device *sdev)
|
|||||||
if (sdev_channel(sdev) != NATIVE_CHANNEL)
|
if (sdev_channel(sdev) != NATIVE_CHANNEL)
|
||||||
goto common_config;
|
goto common_config;
|
||||||
|
|
||||||
/*
|
set_qd_dev_type = true;
|
||||||
* Check if SATA drive
|
|
||||||
*/
|
}
|
||||||
|
|
||||||
|
common_config:
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check if SATA drive
|
||||||
|
*/
|
||||||
|
if (set_qd_dev_type) {
|
||||||
if (strncmp(sdev->vendor, "ATA", 3) == 0)
|
if (strncmp(sdev->vendor, "ATA", 3) == 0)
|
||||||
depth = 32;
|
depth = 32;
|
||||||
else
|
else
|
||||||
depth = 64;
|
depth = 64;
|
||||||
}
|
}
|
||||||
|
|
||||||
common_config:
|
|
||||||
/*
|
/*
|
||||||
* Firmware has an individual device recovery time typically
|
* Firmware has an individual device recovery time typically
|
||||||
* of 35 seconds, give us a margin.
|
* of 35 seconds, give us a margin.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user