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 v2] ata: libata-scsi: Fix CDL control
Date: Thu, 14 Aug 2025 11:28:02 +0900 [thread overview]
Message-ID: <1d33a2b0-8811-474a-8399-71eeaa05a2ea@kernel.org> (raw)
In-Reply-To: <20250814022256.1663314-1-ipylypiv@google.com>
On 8/14/25 11:22 AM, Igor Pylypiv wrote:
> Delete extra checks for the ATA_DFLAG_CDL_ENABLED flag that 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 enabled already.
>
> Fixes: 17e897a45675 ("ata: libata-scsi: Improve CDL control")
> Signed-off-by: Igor Pylypiv <ipylypiv@google.com>
Thanks. This looks good.
Of note though, is that this is all due to the fact that we set or clear the
flag irrespective of the result of the SET_FEATURE command, which may actually
fail... But we do not have a simple way to wait for that command to complete
first before manipulating the flag. This will need some bigger fixes later :)
> ---
>
> Changes from v1:
> - Changed the patch from revert to fixup.
> - Restored debug logs and the comment about mutual exclusivity with
> NCQ priority.
> - Dropped cc to stable and added fixes tag instead.
>
> drivers/ata/libata-scsi.c | 11 +++--------
> 1 file changed, 3 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
> index 57f674f51b0c..2ded5e476d6e 100644
> --- a/drivers/ata/libata-scsi.c
> +++ b/drivers/ata/libata-scsi.c
> @@ -3904,21 +3904,16 @@ 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;
> + /* Disable CDL */
> ata_dev_dbg(dev, "Disabling CDL\n");
> 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.
> + * Enable CDL. Since CDL is mutually exclusive with NCQ
> + * priority, allow this only if NCQ priority is disabled.
> */
> - if (dev->flags & ATA_DFLAG_CDL_ENABLED)
> - return 0;
> if (dev->flags & ATA_DFLAG_NCQ_PRIO_ENABLED) {
> ata_dev_err(dev,
> "NCQ priority must be disabled to enable CDL\n");
--
Damien Le Moal
Western Digital Research
next prev parent reply other threads:[~2025-08-14 2:30 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-14 2:22 [PATCH v2] ata: libata-scsi: Fix CDL control Igor Pylypiv
2025-08-14 2:28 ` Damien Le Moal [this message]
2025-08-14 9:40 ` Niklas Cassel
2025-08-14 10:02 ` Damien Le Moal
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=1d33a2b0-8811-474a-8399-71eeaa05a2ea@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.