Disable asynchronous aborts for SATA devices
This commit is contained in:
parent
9a41499923
commit
d42878a1e5
|
@ -42,6 +42,9 @@ linux (4.14.13-1) UNRELEASED; urgency=medium
|
|||
- [s390x] KVM: fix cmma migration for multiple memory slots
|
||||
- [s390x] KVM: prevent buffer overrun on memory hotplug during migration
|
||||
|
||||
[ Salvatore Bonaccorso ]
|
||||
* Disable asynchronous aborts for SATA devices
|
||||
|
||||
-- Salvatore Bonaccorso <carnil@debian.org> Wed, 10 Jan 2018 09:58:46 +0100
|
||||
|
||||
linux (4.14.12-2) unstable; urgency=medium
|
||||
|
|
57
debian/patches/bugfix/all/Disable-asynchronous-aborts-for-SATA-devices.patch
vendored
Normal file
57
debian/patches/bugfix/all/Disable-asynchronous-aborts-for-SATA-devices.patch
vendored
Normal file
|
@ -0,0 +1,57 @@
|
|||
From: Hannes Reinecke <hare@suse.de>
|
||||
Date: Wed, 10 Jan 2018 08:34:02 +0100
|
||||
Subject: Disable asynchronous aborts for SATA devices
|
||||
Origin: https://marc.info/?l=linux-scsi&m=151557324907914
|
||||
|
||||
Handling CD-ROM devices from libsas is decidedly odd, as libata
|
||||
relies on SCSI EH to be started to figure out that no medium is
|
||||
present.
|
||||
So we cannot do asynchronous aborts for SATA devices.
|
||||
|
||||
Fixes: 909657615d9 ("scsi: libsas: allow async aborts")
|
||||
Cc: <stable@vger.kernel.org> # 4.12+
|
||||
Signed-off-by: Hannes Reinecke <hare@suse.com>
|
||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
||||
Tested-by: Yves-Alexis Perez <corsac@debian.org>
|
||||
---
|
||||
drivers/scsi/libsas/sas_scsi_host.c | 17 +++++++++++++++--
|
||||
1 file changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
|
||||
index 58476b728c57..c9406852c3e9 100644
|
||||
--- a/drivers/scsi/libsas/sas_scsi_host.c
|
||||
+++ b/drivers/scsi/libsas/sas_scsi_host.c
|
||||
@@ -486,15 +486,28 @@ static int sas_queue_reset(struct domain_device *dev, int reset_type,
|
||||
|
||||
int sas_eh_abort_handler(struct scsi_cmnd *cmd)
|
||||
{
|
||||
- int res;
|
||||
+ int res = TMF_RESP_FUNC_FAILED;
|
||||
struct sas_task *task = TO_SAS_TASK(cmd);
|
||||
struct Scsi_Host *host = cmd->device->host;
|
||||
+ struct domain_device *dev = cmd_to_domain_dev(cmd);
|
||||
struct sas_internal *i = to_sas_internal(host->transportt);
|
||||
+ unsigned long flags;
|
||||
|
||||
if (!i->dft->lldd_abort_task)
|
||||
return FAILED;
|
||||
|
||||
- res = i->dft->lldd_abort_task(task);
|
||||
+ spin_lock_irqsave(host->host_lock, flags);
|
||||
+ /* We cannot do async aborts for SATA devices */
|
||||
+ if (dev_is_sata(dev) && !host->host_eh_scheduled) {
|
||||
+ spin_unlock_irqrestore(host->host_lock, flags);
|
||||
+ return FAILED;
|
||||
+ }
|
||||
+ spin_unlock_irqrestore(host->host_lock, flags);
|
||||
+
|
||||
+ if (task)
|
||||
+ res = i->dft->lldd_abort_task(task);
|
||||
+ else
|
||||
+ SAS_DPRINTK("no task to abort\n");
|
||||
if (res == TMF_RESP_FUNC_SUCC || res == TMF_RESP_FUNC_COMPLETE)
|
||||
return SUCCESS;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
From: Salvatore Bonaccorso <carnil@debian.org>
|
||||
Date: Fri, 5 Jan 2018 13:36:38 +0100
|
||||
Subject: Revert "scsi: libsas: allow async aborts"
|
||||
Bug-Debian: https://bugs.debian.org/882414
|
||||
|
||||
---
|
||||
drivers/scsi/libsas/sas_scsi_host.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/drivers/scsi/libsas/sas_scsi_host.c b/drivers/scsi/libsas/sas_scsi_host.c
|
||||
index ea8ad06ff582..e81c8590d254 100644
|
||||
--- a/drivers/scsi/libsas/sas_scsi_host.c
|
||||
+++ b/drivers/scsi/libsas/sas_scsi_host.c
|
||||
@@ -491,6 +491,9 @@ int sas_eh_abort_handler(struct scsi_cmnd *cmd)
|
||||
struct Scsi_Host *host = cmd->device->host;
|
||||
struct sas_internal *i = to_sas_internal(host->transportt);
|
||||
|
||||
+ if (current != host->ehandler)
|
||||
+ return FAILED;
|
||||
+
|
||||
if (!i->dft->lldd_abort_task)
|
||||
return FAILED;
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -82,7 +82,7 @@ bugfix/all/i40e-i40evf-organize-and-re-number-feature-flags.patch
|
|||
bugfix/all/i40e-fix-flags-declaration.patch
|
||||
bugfix/all/xen-time-do-not-decrease-steal-time-after-live-migra.patch
|
||||
bugfix/all/e1000e-fix-e1000_check_for_copper_link_ich8lan-return-value.patch
|
||||
debian/revert-scsi-libsas-allow-async-aborts.patch
|
||||
bugfix/all/Disable-asynchronous-aborts-for-SATA-devices.patch
|
||||
|
||||
# Miscellaneous features
|
||||
|
||||
|
|
Loading…
Reference in New Issue