On Wed, Apr 16, 2025 at 05:42:37PM +0900, Damien Le Moal wrote: > With ATA devices supporting the CDL feature, using CDL requires that the > feature be enabled with a SET FEATURES command. This command is issued > as the translated command for the MODE SELECT command issued by > scsi_cdl_enable() when the user enables CDL through the device > cdl_enable sysfs attribute. > > Currently, ata_mselect_control_ata_feature() always translates a MODE > SELECT command for the ATA features subpage of the control mode page to > a SET FEATURES command to enable or disable CDL based on the cdl_ctrl > field. However, there is no need to issue the SET FEATURES command if: > 1) The MODE SELECT command requests disabling CDL and CDL is already > disabled. > 2) The MODE SELECT command requests enabling CDL and CDL is already > enabled. > > Fix ata_mselect_control_ata_feature() to issue the SET FEATURES command > only when necessary. Since enabling CDL also implies a reset of the CDL > statistics log page, avoiding useless CDL enable operations also avoids > clearing the CDL statistics log. > > Also add debug messages to clearly signal when CDL is being enabled or > disabled using a SET FEATURES command. > > Fixes: df60f9c64576 ("scsi: ata: libata: Add ATA feature control sub-page translation") > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Damien Le Moal <dlemoal@xxxxxxxxxx> Reviewed-by: Igor Pylypiv <ipylypiv@xxxxxxxxxx>