Re: [PATCH] libata: add horkage for M88V29

Böszörményi Zoltán
2022-06-23T08:38:58Z

2022. 06. 23. 10:22 keltezéssel, Damien Le Moal írta:
> On 6/23/22 16:47, Böszörményi Zoltán wrote:
>> 2022. 02. 08. 9:07 keltezéssel, Damien Le Moal írta:
>>> On 2/4/22 21:57, zboszor@pr.hu wrote:
>>>> From: Zoltán Böszörményi <zboszor@gmail.com>
>>>>
>>>> This device is a CF card, or possibly an SSD in CF form factor.
>>>> It supports NCQ and high speed DMA.
>>>>
>>>> While it also advertises TRIM support, I/O errors are reported
>>>> when the discard mount option fstrim is used. TRIM also fails
>>>> when disabling NCQ and not just as an NCQ command.
>>>>
>>>> TRIM must be disabled for this device.
>>>>
>>>> Signed-off-by: Zoltán Böszörményi <zboszor@gmail.com>
>>>> ---
>>>> drivers/ata/libata-core.c | 1 +
>>>> 1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
>>>> index 67f88027680a..4a7f58fcc411 100644
>>>> --- a/drivers/ata/libata-core.c
>>>> +++ b/drivers/ata/libata-core.c
>>>> @@ -4028,6 +4028,7 @@ static const struct ata_blacklist_entry ata_device_blacklist [] = {
>>>>
>>>> /* devices that don't properly handle TRIM commands */
>>>> { "SuperSSpeed S238*", NULL, ATA_HORKAGE_NOTRIM, },
>>>> + { "M88V29*", NULL, ATA_HORKAGE_NOTRIM, },
>>>>
>>>> /*
>>>> * As defined, the DRAT (Deterministic Read After Trim) and RZAT
>>> Applied to for-5.17-fixes. Thanks !
>> Thank you. However, I have second thoughts about this patch.
>> The device advertises this:
>>
>> # hdparm -iI /dev/sda
>> ...
>>  Enabled Supported
>>     *    Data Set Management TRIM supported (limit 1 block)
>> ...
>>
>> but the I/O failures always reported higher number of blocks,
>> IIRC the attempted number of block was 8 or so.
>>
>> Can the kernel limit or split TRIM commands according to the
>> advertised limit? If not (or not yet) then the quirk is good for now.
> Yes, the kernel does that. See the sysfs queue attributes
> discard_max_bytes and discard_max_hw_bytes. What are the values for your
> device ? I think that the "limit 1 block" indicated by hdparm is simply to
> say that the DSM command (to trim the device) accept only at most a 1
> block (512 B) list of sectors to trim. That is not the actual trim limit
> for each sector range in that list.

With the quirk in effect (TRIM disabled) I have these:

[root@chef queue]# pwd
/sys/block/sda/queue
[root@chef queue]# cat discard_granularity
0
[root@chef queue]# cat discard_max_bytes
0
[root@chef queue]# cat discard_max_hw_bytes
0

>
>> Best regards,
>> Zoltán Böszörményi
>>
>