Re: [PATCH v2] ata: libata-scsi: Fix get identity data failed

yangxingui
2023-05-08T01:11:42Z

On 2023/5/7 22:51, Damien Le Moal wrote:
> On 2023/05/05 18:06, yangxingui wrote:
>>
>>
>> On 2023/5/5 16:17, Damien Le Moal wrote:
>>> On 2023/05/05 11:57, Xingui Yang wrote:
>>>> The function ata_get_identity() uses the helper ata_scsi_find_dev() to get
>>>> the ata_device structure of a scsi device. However, when the ata device is
>>>> managed by libsas, ata_scsi_find_dev() returns NULL, turning
>>>> ata_get_identity() into a nop and always returns -ENOMSG.
>>>
>>> What do you do to hit the issue ? A while back for me it was the queue depth
>>> setting causing problems. As Garry mentioned, this led to patch 141f3d6256e5
>>> ("ata: libata-sata: Fix device queue depth control").
>> Attempt to return the correct value at ata_scsi_find_dev() instead of
>> NULL, when the ata device is managed by libsas?
>
> That I understand. My question is *what* user operation/command triggers this ?
> Because on my test setup, under normal use, I do not see this issue (beside what
> was already corrected with the queue depth control). Is the issue showing up
> when using passthrough commands only ?
Yeah, we found that command "hdparm -i /dev/sdc" always return faild for
SATA HDD disk. as follows:
[root@localhost ~]# hdparm -i /dev/sdc

/dev/sdc:
HDIO_GET_IDENTITY failed: Invalid argument

trace log：
execve("/usr/sbin/hdparm", ["hdparm", "-i", "/dev/sdc"], 0xffffea26f620
/* 42 vars */) = 0
ioctl(3, HDIO_GET_IDENTITY, 0xffffeb435f28) = -1 ENOMSG (No message of
desired type)

Thanks,
Xingui
.