From patchwork Wed May 9 00:28:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 910576 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-ide-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="n5CMb9Ka"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40gcds2P2Cz9s3G for ; Wed, 9 May 2018 10:28:17 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932632AbeEIA2P (ORCPT ); Tue, 8 May 2018 20:28:15 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:25942 "EHLO esa1.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932475AbeEIA2P (ORCPT ); Tue, 8 May 2018 20:28:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1525825695; x=1557361695; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=w9uOOFS29UlN1gjZSMDNsU5F9ulQLaE5sCGECuA2dQo=; b=n5CMb9KaFlEn7aKjJnORJD86D5Ur3jS2tRm7ZlYokW1Y1QTM43HYn4R+ MpzLM9JUryrqoVwJ9hkdqEiWXgD8kum14kX6gKgRgLEa5/x5vE77Y8aiU wswShyFDPF2Nm4qrPFuKCUivWBGQLs+QYfnxZjXmaM1LMw19H69StFWc/ 98nYRk2a3+pZcxSZ+MBKqQ+ZXMfZzbYIsL3yuPiQmowweSe5Hm2Kyw5Cp ONPX8W8u3O2NSMHyqheQwRcqCCRjrEM74fruGbgFxBXQQ0tri/VWK9Rij HSJ3aqJT6JskVbjWjVwnUwwfUHjUPud0+9Yxy6cuZPePDNruDZu9a7YRW A==; X-IronPort-AV: E=Sophos;i="5.49,379,1520870400"; d="scan'208";a="180758035" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 May 2018 08:28:15 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 08 May 2018 17:19:54 -0700 Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip01.wdc.com with ESMTP; 08 May 2018 17:28:14 -0700 From: Damien Le Moal To: linux-ide@vger.kernel.org, Tejun Heo Cc: "Martin K . Petersen" , Hannes Reinecke , Bart Van Assche Subject: [PATCH 1/5] libata: Fix comment typo in ata_eh_analyze_tf() Date: Wed, 9 May 2018 09:28:08 +0900 Message-Id: <20180509002812.13151-2-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180509002812.13151-1-damien.lemoal@wdc.com> References: <20180509002812.13151-1-damien.lemoal@wdc.com> Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/ata/libata-eh.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 513b260bcff1..d7b84bc64ae1 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c @@ -1866,10 +1866,10 @@ static unsigned int ata_eh_analyze_tf(struct ata_queued_cmd *qc, if (qc->flags & ATA_QCFLAG_SENSE_VALID) { int ret = scsi_check_sense(qc->scsicmd); /* - * SUCCESS here means that the sense code could + * SUCCESS here means that the sense code could be * evaluated and should be passed to the upper layers * for correct evaluation. - * FAILED means the sense code could not interpreted + * FAILED means the sense code could not be interpreted * and the device would need to be reset. * NEEDS_RETRY and ADD_TO_MLQUEUE means that the * command would need to be retried. From patchwork Wed May 9 00:28:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 910577 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-ide-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="S7xyBQp7"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40gcdt1FWHz9s3D for ; Wed, 9 May 2018 10:28:18 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932802AbeEIA2Q (ORCPT ); Tue, 8 May 2018 20:28:16 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:25942 "EHLO esa1.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932475AbeEIA2Q (ORCPT ); Tue, 8 May 2018 20:28:16 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1525825696; x=1557361696; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=dl4tEI4rm8n0j8OSBU0UYfTUNCzUq6BURYVtC/ulcD4=; b=S7xyBQp7dy2wHHlvLQOtHZ3JmCDqPHszMD2lXG7VlLtFUV/fXPzNOiq5 l5tX2EM9MQs9iJ7el7V68hgAwtPibrg7RUvEfcqLftZRiuKKFAYd7hV6G /XfMjyu8ExHvs9fWJq6tLmziHVBOp71HDwoLQAe5+i/zoEzY75Z9GdodX rdUeoO83m4HQuf5UMZ5kaHV/co63wBcspxTjIs9OeeKUla6NhEEyZD87d zITVNadBqzuDEBp6ME5baWyfqjauoYoevlxd+bdk2lpNr7MNmtrsFixEi hOQPR/GNyNsRSBgF7AbUIAFhvSiOcwrnbx5GgDMZo1eG8g/tOiQYAgA3e Q==; X-IronPort-AV: E=Sophos;i="5.49,379,1520870400"; d="scan'208";a="180758036" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 May 2018 08:28:16 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 08 May 2018 17:19:55 -0700 Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip01.wdc.com with ESMTP; 08 May 2018 17:28:15 -0700 From: Damien Le Moal To: linux-ide@vger.kernel.org, Tejun Heo Cc: "Martin K . Petersen" , Hannes Reinecke , Bart Van Assche Subject: [PATCH 2/5] libata: Fix ata_err_string() Date: Wed, 9 May 2018 09:28:09 +0900 Message-Id: <20180509002812.13151-3-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180509002812.13151-1-damien.lemoal@wdc.com> References: <20180509002812.13151-1-damien.lemoal@wdc.com> Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org Add proper error string output for ATA_ERR_NCQ and ATA_ERR_NODEV_HINT instead of returning "unknown error". Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/ata/libata-eh.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index d7b84bc64ae1..c6871c0749f7 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c @@ -1483,6 +1483,10 @@ static const char *ata_err_string(unsigned int err_mask) return "invalid argument"; if (err_mask & AC_ERR_DEV) return "device error"; + if (err_mask & AC_ERR_NCQ) + return "NCQ error"; + if (err_mask & AC_ERR_NODEV_HINT) + return "Polling detection error"; return "unknown error"; } From patchwork Wed May 9 00:28:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 910578 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-ide-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="PAiZOfNw"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40gcdv01Rdz9s3G for ; Wed, 9 May 2018 10:28:19 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932965AbeEIA2R (ORCPT ); Tue, 8 May 2018 20:28:17 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:25942 "EHLO esa1.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932475AbeEIA2R (ORCPT ); Tue, 8 May 2018 20:28:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1525825697; x=1557361697; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=Z830XQubWuSgbi2SZ3OrQwfYxkJGO1X1RLmDxxm1o5c=; b=PAiZOfNwxLNG2dbtHMwd45NX2S9TgDyPDzjjb8IiWLKwFgFeh2aOMkmB 6aMU6hJGu4cZT5rCHWmopy1fXSiyODVpVW2VWmnP0mI+OcQH/Xx/UnEiO UZnT4+tTeA6vWfzBnL4JYiIEYdlyOFZzOBBmgiJjWng61SUKeSQvpSrnc I3Xkg01uLF4zXb0lK8/f1RU+se/lnznKKDPNvyiMhEucCKtvVB4QSqZfW XdA51WwoneeT1fKsjdX+u2dBh4yKV5rX2QqyENaObOyvphlZilghFQirp kH7UUs0W5rD/R1rk9bVBk76hk1haTEnXlc0X4mNK0bO4rw6RCknPxKDnw w==; X-IronPort-AV: E=Sophos;i="5.49,379,1520870400"; d="scan'208";a="180758039" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 May 2018 08:28:17 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 08 May 2018 17:19:56 -0700 Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip01.wdc.com with ESMTP; 08 May 2018 17:28:16 -0700 From: Damien Le Moal To: linux-ide@vger.kernel.org, Tejun Heo Cc: "Martin K . Petersen" , Hannes Reinecke , Bart Van Assche Subject: [PATCH 3/5] libata: Make ata_dev_set_mode() less verbose Date: Wed, 9 May 2018 09:28:10 +0900 Message-Id: <20180509002812.13151-4-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180509002812.13151-1-damien.lemoal@wdc.com> References: <20180509002812.13151-1-damien.lemoal@wdc.com> Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org For a successful setting of the device transfer speed mode in ata_dev_set_mode(), do not print the message "ataX.XX: configured for xxx" if the EH context has the quiet flag set, unless the device port is being reset. This preserves the output of the message during device scan but removes it in the case of a simple device revalidation such as trigerred by enabling the NCQ I/O priority feature of the device e.g. echo 1 > /sys/block/sdxx/device/ncq_iprio_enable Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/ata/libata-core.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index 68596bd4cf06..f65c62bff229 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -3573,9 +3573,11 @@ static int ata_dev_set_mode(struct ata_device *dev) DPRINTK("xfer_shift=%u, xfer_mode=0x%x\n", dev->xfer_shift, (int)dev->xfer_mode); - ata_dev_info(dev, "configured for %s%s\n", - ata_mode_string(ata_xfer_mode2mask(dev->xfer_mode)), - dev_err_whine); + if (!(ehc->i.flags & ATA_EHI_QUIET) || + ehc->i.flags & ATA_EHI_DID_HARDRESET) + ata_dev_info(dev, "configured for %s%s\n", + ata_mode_string(ata_xfer_mode2mask(dev->xfer_mode)), + dev_err_whine); return 0; From patchwork Wed May 9 00:28:11 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 910579 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-ide-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="crOwzSDz"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40gcdv5v5Rz9s3D for ; Wed, 9 May 2018 10:28:19 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933115AbeEIA2S (ORCPT ); Tue, 8 May 2018 20:28:18 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:25942 "EHLO esa1.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932988AbeEIA2S (ORCPT ); Tue, 8 May 2018 20:28:18 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1525825698; x=1557361698; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=ieGvUTAqaK8p2ymqVO67VQcfhnAqkmk1A3qguL4MHNY=; b=crOwzSDzFkkGf0qytpPsIVLKEQgoXxhB5ZihsIT9r98zyVztYX/6Z4sW 0y3R/L1xKIKwSvUNPnTIkSl0ErYX/67KYp5gzNwNQqF9QWVqinG+L9h0c VFc5kZBOCeavFkYJqbU3JYYVy9g+LzkSgfm46cw/LwalJ/tBNNZLxmtZU 7jOD42TGhzIACtiY8AFbl/hIyca/0cnT7hKlyFn8FuPDBaycTIAFFPVYZ y3pZ/JMgcKnSSLcOw3wgdwT6ZM729hv0rSzePl/vU/K/nTgKXwCGl+/ck KN3G7jVYY9VmbtJ+swdelqrSQUE3z01HhvRtI4ccg/otYefS9WniuxnC3 w==; X-IronPort-AV: E=Sophos;i="5.49,379,1520870400"; d="scan'208";a="180758040" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 May 2018 08:28:18 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 08 May 2018 17:19:57 -0700 Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip01.wdc.com with ESMTP; 08 May 2018 17:28:17 -0700 From: Damien Le Moal To: linux-ide@vger.kernel.org, Tejun Heo Cc: "Martin K . Petersen" , Hannes Reinecke , Bart Van Assche Subject: [PATCH 4/5] libata: Honor RQF_QUIET flag Date: Wed, 9 May 2018 09:28:11 +0900 Message-Id: <20180509002812.13151-5-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180509002812.13151-1-damien.lemoal@wdc.com> References: <20180509002812.13151-1-damien.lemoal@wdc.com> Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org Currently, libata ignores requests RQF_QUIET flag and print error messages for failed commands, regardless if this flag is set in the command request. Fix this by introducing the ata_eh_quiet() function and using this function in ata_eh_link_autopsy() to determine if the EH context should be quiet. This works by counting the number of failed commands and the number of commands with the quiet flag set. If both numbers are equal, the the EH context can be set to quiet and all error messages suppressed. Otherwise, only the error messages for the failed commands are suppressed and the link Emask and irq_stat messages printed. Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/ata/libata-eh.c | 26 +++++++++++++++++++++++++- drivers/ata/libata-scsi.c | 3 +++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index c6871c0749f7..ccaed93985bb 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c @@ -2153,6 +2153,21 @@ static inline int ata_eh_worth_retry(struct ata_queued_cmd *qc) return qc->err_mask != AC_ERR_DEV; /* retry if not dev error */ } +/** + * ata_eh_quiet - check if we need to be quiet about a command error + * @qc: qc to check + * + * Look at the qc flags anbd its scsi command request flags to determine + * if we need to be quiet about the command failure. + */ +static inline bool ata_eh_quiet(struct ata_queued_cmd *qc) +{ + if (qc->scsicmd && + qc->scsicmd->request->rq_flags & RQF_QUIET) + qc->flags |= ATA_QCFLAG_QUIET; + return qc->flags & ATA_QCFLAG_QUIET; +} + /** * ata_eh_link_autopsy - analyze error and determine recovery action * @link: host link to perform autopsy on @@ -2170,7 +2185,7 @@ static void ata_eh_link_autopsy(struct ata_link *link) struct ata_eh_context *ehc = &link->eh_context; struct ata_device *dev; unsigned int all_err_mask = 0, eflags = 0; - int tag; + int tag, nr_failed = 0, nr_quiet = 0; u32 serror; int rc; @@ -2236,8 +2251,17 @@ static void ata_eh_link_autopsy(struct ata_link *link) if (qc->flags & ATA_QCFLAG_IO) eflags |= ATA_EFLAG_IS_IO; trace_ata_eh_link_autopsy_qc(qc); + + /* Count quiet errors */ + if (ata_eh_quiet(qc)) + nr_quiet++; + nr_failed++; } + /* If all failed commands requested silence, then be quiet */ + if (nr_quiet == nr_failed) + ehc->i.flags |= ATA_EHI_QUIET; + /* enforce default EH actions */ if (ap->pflags & ATA_PFLAG_FROZEN || all_err_mask & (AC_ERR_HSM | AC_ERR_TIMEOUT)) diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c index 89a9d4a2efc8..8d76de9189e4 100644 --- a/drivers/ata/libata-scsi.c +++ b/drivers/ata/libata-scsi.c @@ -872,6 +872,9 @@ static struct ata_queued_cmd *ata_scsi_qc_new(struct ata_device *dev, qc->sg = scsi_sglist(cmd); qc->n_elem = scsi_sg_count(cmd); + + if (cmd->request->rq_flags & RQF_QUIET) + qc->flags |= ATA_QCFLAG_QUIET; } else { cmd->result = (DID_OK << 16) | (QUEUE_FULL << 1); cmd->scsi_done(cmd); From patchwork Wed May 9 00:28:12 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Damien Le Moal X-Patchwork-Id: 910580 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-ide-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=wdc.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=wdc.com header.i=@wdc.com header.b="TLg1BxSc"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40gcdw4ZKxz9s3G for ; Wed, 9 May 2018 10:28:20 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933134AbeEIA2U (ORCPT ); Tue, 8 May 2018 20:28:20 -0400 Received: from esa1.hgst.iphmx.com ([68.232.141.245]:25942 "EHLO esa1.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932988AbeEIA2T (ORCPT ); Tue, 8 May 2018 20:28:19 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1525825699; x=1557361699; h=from:to:cc:subject:date:message-id:in-reply-to: references; bh=wjqLBog1T9zRElUsdR+zxk8Nqqw6G4wcebNH02QN4Rg=; b=TLg1BxSc3m9+0zmEe4e0pMWaVQqB8AB4qDUGLw3RC5Vq1N0pNPg0rAj4 iQEy/ix1Kw6enshNjyFz75IyYuhthvpWF06cItSBkpJLsVn/fmujlPGxT bbRcuhOywwiI6kK0nGIHpwDyetGKfFRK++EgrB+ajleQJspFpXlWv1yH7 QejwCaGLzsMFL2Sr8EGXtjc3l+0Nxmd7AHIokf9HKM2ZWh376HmOP/9fp mEadhvPsdpAnFftL9SzBF62dZmOYwUxj0jJQC9xSgUMinZk7n51IUDkqR 9a4R5hZNLFQ4/D/P8dOAObFi0Me90E9ElEwScPs1fvdVv39n9ffyUrryH g==; X-IronPort-AV: E=Sophos;i="5.49,379,1520870400"; d="scan'208";a="180758042" Received: from uls-op-cesaip01.wdc.com (HELO uls-op-cesaep01.wdc.com) ([199.255.45.14]) by ob1.hgst.iphmx.com with ESMTP; 09 May 2018 08:28:19 +0800 Received: from uls-op-cesaip01.wdc.com ([10.248.3.36]) by uls-op-cesaep01.wdc.com with ESMTP; 08 May 2018 17:19:59 -0700 Received: from washi.fujisawa.hgst.com ([10.149.53.254]) by uls-op-cesaip01.wdc.com with ESMTP; 08 May 2018 17:28:18 -0700 From: Damien Le Moal To: linux-ide@vger.kernel.org, Tejun Heo Cc: "Martin K . Petersen" , Hannes Reinecke , Bart Van Assche Subject: [PATCH 5/5] libata: Fix command retry decision Date: Wed, 9 May 2018 09:28:12 +0900 Message-Id: <20180509002812.13151-6-damien.lemoal@wdc.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180509002812.13151-1-damien.lemoal@wdc.com> References: <20180509002812.13151-1-damien.lemoal@wdc.com> Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org For failed commands with valid sense data (e.g. NCQ commands), scsi_check_sense() is used in ata_analyze_tf() to determine if the command can be retried. In such case, rely on this decision and ignore the command error mask based decision done in ata_worth_retry(). This fixes useless retries of commands such as unaligned writes on zoned disks (TYPE_ZAC). Signed-off-by: Damien Le Moal Reviewed-by: Hannes Reinecke --- drivers/ata/libata-eh.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index ccaed93985bb..816388df72a6 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c @@ -2237,12 +2237,16 @@ static void ata_eh_link_autopsy(struct ata_link *link) if (qc->err_mask & ~AC_ERR_OTHER) qc->err_mask &= ~AC_ERR_OTHER; - /* SENSE_VALID trumps dev/unknown error and revalidation */ + /* + * SENSE_VALID trumps dev/unknown error and revalidation. Upper + * layers will determine whether the command is worth retrying + * based on the sense data and device class/type. Otherwise, + * determine directly if the command is worth retrying using its + * error mask and flags. + */ if (qc->flags & ATA_QCFLAG_SENSE_VALID) qc->err_mask &= ~(AC_ERR_DEV | AC_ERR_OTHER); - - /* determine whether the command is worth retrying */ - if (ata_eh_worth_retry(qc)) + else if (ata_eh_worth_retry(qc)) qc->flags |= ATA_QCFLAG_RETRY; /* accumulate error info */