[smartmontools-support] nvme drive partial support

Kwon-Young Choi kwon-young.choi at hotmail.fr
Fri Nov 13 10:07:53 CET 2020


So, your reasoning seems correct except for the log size that work and
not work.
For me, both 16320 and 16256 does not work, but after a binary search, I
found that I can read the log with a `log-len` of 6091 and it stops
working with a `log-len` of 6092.

Let me know if you want more info.

Kwon-Young Choi

On 13/11/2020 08:34, Christian Franke wrote:
> Kwon-Young Choi wrote:
>>> ... smartctl ... /dev/nvme0n1 ..
>>> ... nvme ....... /dev/nvme0 ....
>>>
>>> Please retry both with device names swapped.
>> Sorry for the confusion. Here is the output of `smartctl` with
>> `/dev/nvme0`:
>>
>> ```
>> $ sudo LANG= /usr/sbin/smartctl -l error /dev/nvme0 -r ioctl
>> [sudo] Mot de passe de kwon-young :
>> smartctl 7.1 2019-12-30 r5022 [x86_64-linux-5.9.3-1-MANJARO] (local
>> build)
>> Copyright (C) 2002-19, Bruce Allen, Christian Franke,
>> www.smartmontools.org
>>
>>   [NVMe call: opcode=0x06, size=0x1000, nsid=0x00000000,
>> cdw10=0x00000001]
>>    [Duration: 0.002s]
>>   [NVMe call succeeded: result=0x00000000]
>> === START OF SMART DATA SECTION ===
>>   [NVMe call: opcode=0x02, size=0x3fc0, nsid=0xffffffff,
>> cdw10=0x0fef0001]
>>    [Duration: 121.692s]
>>   [NVMe call failed: NVME_IOCTL_ADMIN_CMD: Interrupted system call]
>> Read Error Information Log failed: NVME_IOCTL_ADMIN_CMD: Interrupted
>> system call
>> ```
>>
>> and the output of `nvme` with `/dev/nvme0n1`:
>>
>> ```
>> $ sudo nvme get-log /dev/nvme0n1 --log-id=1 --log-len=1024
>> Device:nvme0n1 log-id:1 namespace-id:0xffffffff
>>         0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
>> 0000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
>> ...
>> 03f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "................"
>> ```
> 
> 
> There is actually a bug in smartctl.
> 
> The difference in the commands above is the size read from the log. In
> the early days of smartctl NVMe support (2016), I decided to always read
> the full log regardless of the desired print size - and unfortunately
> introduced a bug: smartctl reads too many (64) bytes from the log. Most
> drives behave polite and return extra 64 null bytes.
> 
> I will fix this soon.
> 
> If the above assumption is true, the following should fail:
> 
> $ sudo nvme get-log /dev/nvme0 --log-id=1 --log-len=16320
> 
> but the following should work - and produce a long hexdump with all
> zeroes, please don't paste it to the list :-)
> 
> $ sudo nvme get-log /dev/nvme0 --log-id=1 --log-len=16256
> 
> 
> Thanks,
> Christian
> 


More information about the Smartmontools-support mailing list