linux/drivers/ata
Damien Le Moal 45623d33bf ata: libata-sata: Improve ata_change_queue_depth()
ata_change_queue_depth() implements different behaviors for ATA devices
managed by libsas than for those managed by libata directly.
Specifically, if a user attempts to set a device queue depth to a value
larger than 32 (ATA_MAX_QUEUE), the queue depth is capped to the maximum
and set to 32 for libsas managed devices whereas for libata managed
devices, the queue depth is unchanged and an error returned to the user.
This is due to the fact that for libsas devices, sdev->host->can_queue
may indicate the host (HBA) maximum number of commands that can be
queued rather than the device maximum queue depth.

Change ata_change_queue_depth() to provide a consistent behavior for all
devices by changing the queue depth capping code to a check that the
user provided value does not exceed the device maximum queue depth.
This check is moved before the code clearing or setting the
ATA_DFLAG_NCQ_OFF flag to ensure that this flag is not modified when an
invlaid queue depth is provided.

While at it, two other small improvements are added:
1) Use ata_ncq_supported() instead of ata_ncq_enabled() and clear the
   ATA_DFLAG_NCQ_OFF flag only and only if needed.
2) If the user provided queue depth is equal to the current queue depth,
   do not return an error as that is useless.

Overall, the behavior of ata_change_queue_depth() for libata managed
devices is unchanged. The behavior with libsas managed devices becomes
consistent with libata managed devices.

Signed-off-by: Damien Le Moal <dlemoal@kernel.org>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: John Garry <john.g.garry@oracle.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
2023-06-05 20:00:36 +09:00
..
pata_parport ata: pata_parport: Fix on26 module code indentation and style 2023-05-16 20:17:05 +09:00
acard-ahci.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
ahci_brcm.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_ceva.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_da850.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_dm816.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_dwc.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_imx.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_mtk.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_mvebu.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_octeon.c ata: octeon: Drop empty platform remove function 2023-01-03 08:39:41 +09:00
ahci_platform.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_qoriq.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_seattle.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_st.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_sunxi.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_tegra.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci_xgene.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
ahci.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
ahci.h scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
ata_generic.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
ata_piix.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
Kconfig ahci: qoriq: Add platform dependencies 2023-03-23 10:29:26 +09:00
libahci_platform.c SCSI misc on 20230426 2023-04-26 15:39:25 -07:00
libahci.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
libata-acpi.c ata: make use of ata_port_is_frozen() helper 2022-10-18 13:53:27 +09:00
libata-core.c ata: libata-core: Simplify if condition in ata_dev_revalidate() 2023-05-16 20:08:05 +09:00
libata-eh.c ata: libata-eh: Clarify ata_eh_qc_retry() behavior at call site 2023-06-01 09:13:22 +09:00
libata-pata-timings.c
libata-pmp.c ata: libata: add tracepoints for ATA error handling 2022-01-05 19:33:01 +09:00
libata-sata.c ata: libata-sata: Improve ata_change_queue_depth() 2023-06-05 20:00:36 +09:00
libata-scsi.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
libata-sff.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
libata-trace.c ata: scsi: rename flag ATA_QCFLAG_FAILED to ATA_QCFLAG_EH 2023-01-04 13:36:26 +09:00
libata-transport.c ata: libata-transport: fix error handling in ata_tdev_add() 2022-11-11 17:26:05 +09:00
libata-transport.h
libata-zpodd.c
libata.h scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
Makefile ATA changes for 6.3-rc1 2023-02-22 13:35:51 -08:00
pata_acpi.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_ali.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_amd.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_arasan_cf.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_artop.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_atiixp.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_atp867x.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_buddha.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_cmd64x.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_cmd640.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_cs5520.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_cs5530.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_cs5535.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_cs5536.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_cypress.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_efar.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_ep93xx.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_falcon.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_ftide010.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_gayle.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_hpt3x2n.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_hpt3x3.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_hpt37x.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_hpt366.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_icside.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_imx.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_isapnp.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_it821x.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_it8213.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_ixp4xx_cf.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
pata_jmicron.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_legacy.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_macio.c SCSI misc on 20230426 2023-04-26 15:39:25 -07:00
pata_marvell.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_mpc52xx.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_mpiix.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_netcell.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_ninja32.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_ns87410.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_ns87415.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_octeon_cf.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_of_platform.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
pata_oldpiix.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_opti.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_optidma.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_pcmcia.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_pdc202xx_old.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_pdc2027x.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_piccolo.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_platform.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
pata_pxa.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_radisys.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_rb532_cf.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_rdc.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_rz1000.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_sc1200.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_sch.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_serverworks.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_sil680.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_sis.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_sl82c105.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_triflex.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pata_via.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
pdc_adma.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_dwc_460ex.c SCSI misc on 20230426 2023-04-26 15:39:25 -07:00
sata_fsl.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_gemini.c ata: sata_gemini: Remove dependency on OF for compile tests 2022-10-18 08:04:46 +09:00
sata_gemini.h
sata_highbank.c ata: libata: Make ata_platform_remove_one return void 2023-05-15 06:49:39 +09:00
sata_inic162x.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_mv.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_nv.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_promise.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_promise.h
sata_qstor.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_rcar.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_sil24.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_sil.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_sis.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_svw.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_sx4.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_uli.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_via.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sata_vsc.c scsi: ata: Declare SCSI host templates const 2023-03-24 19:19:19 -04:00
sis.h