Ever since we implemented NCQ for libata, the max queue depth on the device side has been limited to 31. This was done to retain one command for error handling. But we can utilize the full depth with a bit of fixing. The motivation for this is twofold: 1) New devices do amazingly well with extracting parallelism from a deeper queue depth, much more so than earlier. I recently ran some tests on two identical drives, with the only difference being SAS vs SATA interface. The former runs at QD=254, while the latter is limited to 31. The SAS drive continues to pull out performance from randomized IO at higher queue depths, ending up being as much as 30% faster than the SATA drive even though they are physically identical. 2) We have IOPS limited applications on rotating storage. A 3% increase in performance is nothing to sneeze at. Most of this series is prep work to get us to the point where we can enable the full 32 queue depth. The last patch enables it for AHCI. Other drivers can easily enable it as well, just modify the can_queue depth passed in. I didn't want to make it the default, as with 32 commands running, SActive register read will be 0xffffffff, which some drivers might interpret as the controller having fallen off the bus. Opting in is easy once that's verified. drivers/ata/acard-ahci.c | 4 +-- drivers/ata/ahci.h | 2 - drivers/ata/libahci.c | 8 +++--- drivers/ata/libata-core.c | 53 +++++++++++++++++-------------------------- drivers/ata/libata-eh.c | 10 +++++--- drivers/ata/libata-scsi.c | 16 ++++++------ drivers/ata/sata_dwc_460ex.c | 14 +++++------ drivers/ata/sata_fsl.c | 8 +++--- drivers/ata/sata_mv.c | 26 ++++++++++----------- drivers/ata/sata_nv.c | 36 ++++++++++++++--------------- drivers/ata/sata_sil24.c | 6 ++-- include/linux/libata.h | 22 ++++++++--------- 12 files changed, 100 insertions(+), 105 deletions(-) -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html