From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Google-Smtp-Source: AH8x224p7EK2/c60b71PhDk4RKmChcLxzlpNj4clNd4VmbeGeirPCgZXiLXhi/PxyB3Qu7d4UMQj ARC-Seal: i=1; a=rsa-sha256; t=1516611190; cv=none; d=google.com; s=arc-20160816; b=E2So6hFBR3yB9FSxuP3dwHFtSjEC7FmXUuEQKmDZ8eMdSb2BNCav42jhXHhdgNMmrw +ypZQviLD8O7frvIyAkGuhHz1+kBxw9Xf0KLEAE9rYP2jT7vP731U1Zl9PtAdvkw7hXm IK2EvFQuzfHIonsYJjTJO7c51bFuZBFTvW05igwJ5o08yILwhD+mZ2U2dpiU8HngjiEq 4UMYqiSzFZDbSLLAt5gsGeY03T/KB1cPKc8OkYOaQwwQvV5uOAvqyMtKJjMDTvULZiKJ r0N6HVL2+CIzqIk/rfzvxmssUXy5ua764ppG+5w1D1AUytVADrw7yQXNf8CS7qpkeDuD cjSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:user-agent:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=5YT6E4Hw5GiiO3QQDsgnFTlz1aTaU2vsCFhipb6dfUQ=; b=x6QMv4h9HyTGGw4lZ4AmJSuUZIhhpNEzcQyJY1EzadmSYKmwdg4C0Rr9R7S175H8l9 okPsNzbXaaoXqNtcswt1cwLcVkutcUBWpQG3yoqZsagYte9LllUwIDTuXxnKop7zGLIp uAjtgVHenqwO2UDTdbdDIuyKQLystG9/b0ZkULqVEczyRiX9cpngTizMi1BIU4E83MTf xKVOd2qhGILFmCN6NK5LHY5YsGVfci5YNcKK2kgRGYU4CqjKlQKISLaPjNSdb+lvD+xU VaC5tCy6Ph1O58MVe+FQtNtytMK0PBOVnIzGX9p1TiQu0V1T8NL17aiNAevo7xtwjkUo +ENg== ARC-Authentication-Results: i=1; mx.google.com; spf=softfail (google.com: domain of transitioning gregkh@linuxfoundation.org does not designate 90.92.71.90 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning gregkh@linuxfoundation.org does not designate 90.92.71.90 as permitted sender) smtp.mailfrom=gregkh@linuxfoundation.org From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Hannes Reinecke , Christoph Hellwig , Yves-Alexis Perez , "Martin K. Petersen" Subject: [PATCH 4.14 67/89] scsi: libsas: Disable asynchronous aborts for SATA devices Date: Mon, 22 Jan 2018 09:45:47 +0100 Message-Id: <20180122084001.189605038@linuxfoundation.org> X-Mailer: git-send-email 2.16.0 In-Reply-To: <20180122083954.683903493@linuxfoundation.org> References: <20180122083954.683903493@linuxfoundation.org> User-Agent: quilt/0.65 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-LABELS: =?utf-8?b?IlxcU2VudCI=?= X-GMAIL-THRID: =?utf-8?q?1590282096316160699?= X-GMAIL-MSGID: =?utf-8?q?1590282096316160699?= X-Mailing-List: linux-kernel@vger.kernel.org List-ID: 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Hannes Reinecke commit c9f926000fe3b84135a81602a9f7e63a6a7898e2 upstream. 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") Signed-off-by: Hannes Reinecke Reviewed-by: Christoph Hellwig Tested-by: Yves-Alexis Perez Signed-off-by: Martin K. Petersen Signed-off-by: Greg Kroah-Hartman --- drivers/scsi/libsas/sas_scsi_host.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) --- 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 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;