From: Damien Le Moal <dlemoal@kernel.org>
To: Igor Pylypiv <ipylypiv@google.com>, Niklas Cassel <cassel@kernel.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Revert "ata: libata-scsi: Improve CDL control"
Date: Thu, 14 Aug 2025 08:08:37 +0900 [thread overview]
Message-ID: <9dde49e5-4368-402f-8cc2-797ac08c0e8a@kernel.org> (raw)
In-Reply-To: <20250813204648.1285197-1-ipylypiv@google.com>
On 8/14/25 5:46 AM, Igor Pylypiv wrote:
> This reverts commit 17e897a456752ec9c2d7afb3d9baf268b442451b.
A full revert is not nice. See below.
Also please change the patch title to:
ata: libata-scsi: Fix CDL control
Or similar.
And do not send the patch to stable@vger.kernel.org. It will be picked up if
you add the Fixes tag (see below).
>
> The extra checks for the ATA_DFLAG_CDL_ENABLED flag prevent SET FEATURES
> command from being issued to a drive when NCQ commands are active.
>
> ata_mselect_control_ata_feature() sets / clears the ATA_DFLAG_CDL_ENABLED
> flag during the translation of MODE SELECT to SET FEATURES. If SET FEATURES
> gets deferred due to outstanding NCQ commands, the original MODE SELECT
> command will be re-queued. When the re-queued MODE SELECT goes through
> the ata_mselect_control_ata_feature() translation again, SET FEATURES
> will not be issued because ATA_DFLAG_CDL_ENABLED has been already set or
> cleared by the initial translation of MODE SELECT.
>
> The ATA_DFLAG_CDL_ENABLED checks in ata_mselect_control_ata_feature()
> are safe to remove because scsi_cdl_enable() implements a similar logic
> that avoids enabling CDL if it has been already enabled.
>
Please add "Fixes: 17e897a45675 ("ata: libata-scsi: Improve CDL control") here.
> Cc: stable@vger.kernel.org
> Signed-off-by: Igor Pylypiv <ipylypiv@google.com>
> ---
> drivers/ata/libata-scsi.c | 14 ++------------
> 1 file changed, 2 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
> index 57f674f51b0c..856eabfd5a17 100644
> --- a/drivers/ata/libata-scsi.c
> +++ b/drivers/ata/libata-scsi.c
> @@ -3904,27 +3904,17 @@ static int ata_mselect_control_ata_feature(struct ata_queued_cmd *qc,
> /* Check cdl_ctrl */
> switch (buf[0] & 0x03) {
> case 0:
> - /* Disable CDL if it is enabled */
> - if (!(dev->flags & ATA_DFLAG_CDL_ENABLED))
> - return 0;
> - ata_dev_dbg(dev, "Disabling CDL\n");
Please keep this debug message and move it below the comment.
> + /* Disable CDL */
> cdl_action = 0;
> dev->flags &= ~ATA_DFLAG_CDL_ENABLED;
> break;
> case 0x02:
> - /*
> - * Enable CDL if not already enabled. Since this is mutually
> - * exclusive with NCQ priority, allow this only if NCQ priority
> - * is disabled.
> - */
> - if (dev->flags & ATA_DFLAG_CDL_ENABLED)
> - return 0;
> + /* Enable CDL T2A/T2B: NCQ priority must be disabled */
T2A/T2B is for SCSI, not ATA. So let's not mention that. I prefer that the
comment keeps the "mutually exclusive" mention, so something like:
*
* Enable CDL. Since this is mutually exclusive with the NCQ
* priority feature set, allow this only if NCQ priority is
* disabled.
*/
> if (dev->flags & ATA_DFLAG_NCQ_PRIO_ENABLED) {
> ata_dev_err(dev,
> "NCQ priority must be disabled to enable CDL\n");
> return -EINVAL;
> }
> - ata_dev_dbg(dev, "Enabling CDL\n");
And please keep this debug message.
> cdl_action = 1;
> dev->flags |= ATA_DFLAG_CDL_ENABLED;
> break;
--
Damien Le Moal
Western Digital Research
prev parent reply other threads:[~2025-08-13 23:11 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-13 20:46 [PATCH] Revert "ata: libata-scsi: Improve CDL control" Igor Pylypiv
2025-08-13 23:08 ` Damien Le Moal [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9dde49e5-4368-402f-8cc2-797ac08c0e8a@kernel.org \
--to=dlemoal@kernel.org \
--cc=cassel@kernel.org \
--cc=ipylypiv@google.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.