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
.