Re: [PATCH] libata: Don't issue ATA_LOG_DIRECTORY to SATADOM-ML 3ME

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2022/02/02 21:25, Anton Lundin wrote:
> On 02 February, 2022 - Damien Le Moal wrote:
> 
>> On 2/2/22 19:05, Anton Lundin wrote:
>>> Back in 06f6c4c6c3e8 ("ata: libata: add missing ata_identify_page_supported() calls")
>>> a read of ATA_LOG_DIRECTORY page was added. This caused the
>>> SATADOM-ML 3ME to lock up.
>>>
>>> In 636f6e2af4fb ("libata: add horkage for missing Identify Device log")
>>> a flag was added to cache if a device supports this or not.
>>>
>>> This adds a blacklist entry which flags that these devices doesn't
>>> support that call and shouldn't be issued that call.
>>>
>>> Cc: stable@xxxxxxxxxxxxxxx # v5.10+
>>> Signed-off-by: Anton Lundin <glance@xxxxxxxxxx>
>>> Depends-on: 636f6e2af4fb ("libata: add horkage for missing Identify Device log")
>>
>> I do not think so. See below.
>>
>>> ---
>>>  drivers/ata/libata-core.c | 7 +++++++
>>>  1 file changed, 7 insertions(+)
>>>
>>> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
>>> index 87d36b29ca5f..e024af9f33d0 100644
>>> --- a/drivers/ata/libata-core.c
>>> +++ b/drivers/ata/libata-core.c
>>> @@ -4070,6 +4070,13 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
>>>  	{ "WDC WD3000JD-*",		NULL,	ATA_HORKAGE_WD_BROKEN_LPM },
>>>  	{ "WDC WD3200JD-*",		NULL,	ATA_HORKAGE_WD_BROKEN_LPM },
>>>  
>>> +	/*
>>> +	 * This sata dom goes on a walkabout when it sees the
>>> +	 * ATA_LOG_DIRECTORY read request so ensure we don't issue such a
>>> +	 * request to these devices.
>>> +	 */
>>> +	{ "SATADOM-ML 3ME",		NULL,	ATA_HORKAGE_NO_ID_DEV_LOG },
>>
>> This flag only disables trying to access the identify device log page,
>> it does *not* avoid access to the log directory log page in general. The
>> log directory will still be consulted for other log pages beside the
>> identify device log page, from any function that calls
>> ata_log_supported() (e.g. ata_dev_config_ncq_send_recv() and
>> ata_dev_config_ncq_non_data())
> 
> Non of those code paths are called for this device, probably due to some
> other flag disqualifying them.
>  
>> So it will be a lot more solid to define a ATA_HORKAGE_NO_LOG_DIR flag
>> and test for it in ata_log_supported(), completely preventing any access
>> to the log directory page for this drive type.
> 
> That was my first thought but then I found ATA_HORKAGE_NO_ID_DEV_LOG
> which was in the calling path that actually triggered this issue.
> 
> But, yes, I totally agree that's a more solid solution preventing this
> kind of issue to crop up again.
> 
>>> +
>>>  	/* End Marker */
>>>  	{ }
>>>  };
>>
>> Note: if you need this fix sent to linux-stable, add "Cc: stable@..."
>> and a Fixes tag.
> 
> I'd think it's fitting to send it to linux-stable, because it prevents
> those DOM's from working in v5.15.5+.
> 
> Ok. I must have missed that part when I read submitting-patches doc.
> 
> I'll rework and re-submit the patch.

I sent you a draft patch. Please try it.

Also, to confirm if the log directory log page is indeed the page that locks up
the drive, can you try this command:

sg_sat_read_gplog --dma --log=0 --page=0 --readonly

and

sg_sat_read_gplog --log=0 --page=0 --readonly

Beware that if the log drectory is the problem, this will lockup your drive !
If that is OK and works, then please try:

sg_sat_read_gplog --dma --log=48 --page=0 --readonly

and

sg_sat_read_gplog --log=48 --page=0 --readonly

log=48 (0x30) is the identify device log page. log=0 is the log directory log page.

> 
> 
> //Anton


-- 
Damien Le Moal
Western Digital Research



[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux