All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 0/2] fixup handling of timeouts with deferred QCs
@ 2026-07-21  6:40 Damien Le Moal
  2026-07-21  6:40 ` [PATCH v7 1/2] ata: libata-scsi: terminate deferred commands on time out Damien Le Moal
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Damien Le Moal @ 2026-07-21  6:40 UTC (permalink / raw)
  To: linux-ide, Niklas Cassel, linux-scsi, Martin K . Petersen
  Cc: Igor Pylypiv, John Garry, Jason Yan

This patch series fixes libata and libsas to correctly handles deferred
queued commands in case of a timeout error, to avoid excessive delays in
waking up the scsi EH task.

Igor,

My apologies for the churn, but please retest!
Also, I added your Signed-off-by on patch 2 since half of it is yours.

Martin,

Once reviewed, I or you can take both patches ?

Changes from v6:
 - In patch 1, go back to using direct command completion for retrying
   deferred QCs, but adds libata EH trigger to avoid problems with the
   block layer immediately re-issuing the retried commands. This same
   method also allows directly handling timed out deferred QCs, which
   simplifies libata EH.

Changes from v5:
 - Reworked patch 1 to have deferred command retries all go through libata
   EH to ensure that we do not run into issues with the block layer
   immediately re-issuing retried deffered commands (which would create
   again the problem we are trying to solve). This change necessitate the
   introduction of a new QC flag and changes to the completion path for
   commands to ATAPI devices.

Changes from v4:
 - Simplified sas_eh_timed_out() code in patch 2

Changes from v3:
 - Reimplement ata_scsi_requeue_deferred_qc() in patch 1 as
   ata_eh_retry_deferred_qc() so that all requeue pathes use the same
   function.

Changes from v2:
 - Modified patch 1 to avoid the problem reported by Sashiko that requeued
   deferred QCs may be re-ssued immediately by the block layer, thus
   potentially keeping the device busy. The modification now relies on
   libata-EH to perform the requeue instead of immediately doing it from
   the eh_timed_out operation.
 - Modified patch 2 to use the new helper function defined in patch 1.

Changes from v1:
 - Modified patch 1 to ignore timed out deferred QCs in
   ata_scsi_requeue_deferred_qc() to let ata_scsi_cmd_error_handler()
   correctly handle this case.

Damien Le Moal (2):
  ata: libata-scsi: terminate deferred commands on time out
  scsi: libsas: terminate deferred commands on time out

 drivers/ata/libata-eh.c             |  29 ++------
 drivers/ata/libata-scsi.c           | 109 +++++++++++++++++++++++++---
 drivers/ata/libata.h                |   3 +-
 drivers/scsi/libsas/sas_scsi_host.c |  15 ++++
 include/linux/libata.h              |   4 +
 include/scsi/libsas.h               |   2 +
 6 files changed, 127 insertions(+), 35 deletions(-)

-- 
2.55.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-07-23  4:20 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-21  6:40 [PATCH v7 0/2] fixup handling of timeouts with deferred QCs Damien Le Moal
2026-07-21  6:40 ` [PATCH v7 1/2] ata: libata-scsi: terminate deferred commands on time out Damien Le Moal
2026-07-21  7:00   ` sashiko-bot
2026-07-21  7:43     ` Damien Le Moal
2026-07-21  6:40 ` [PATCH v7 2/2] scsi: libsas: " Damien Le Moal
2026-07-23  4:20 ` [PATCH v7 0/2] fixup handling of timeouts with deferred QCs Igor Pylypiv

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.