Opened 8 months ago

Closed 8 months ago

Last modified 8 months ago

#1745 closed defect (fixed)

Don't print error log entries if error count is zero

Reported by: René Bertin Owned by: Christian Franke
Priority: minor Milestone: Release 7.5
Component: smartctl Version:
Keywords: ata Cc:

Description (last modified by Christian Franke)

I received a new 256Gb Kingston (M-SATA) SSD and as usual I filled it with zeroes and then ran a long self-test before taking it into use.

Here's the output of smartctl -a (smartmontools 7.4):

smartctl 7.4 2023-08-01 r5530 [x86_64-linux-4.14.23-ck1-mainline-core2-rjvb] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Silicon Motion based SSDs
Device Model:     KINGSTON SKC600MS256G
Serial Number:    50026B77856B72A3
LU WWN Device Id: 5 0026b7 7856b72a3
Firmware Version: S4800105
User Capacity:    256,060,514,304 bytes [256 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
TRIM Command:     Available, deterministic, zeroed
Device is:        In smartctl database 7.3/5533
ATA Version is:   ACS-3 T13/2161-D revision 5
SATA Version is:  SATA 3.3, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sat Sep  9 18:35:36 2023 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever 
                                        been run.
Total time to complete Offline 
data collection:                (    0) seconds.
Offline data collection
capabilities:                    (0x7b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0002) Does not save SMART data before
                                        entering power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine 
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        (  30) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x0031) SCT Status supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x0000   100   100   000    Old_age   Offline      -       0
  5 Reallocated_Sector_Ct   0x0000   100   100   000    Old_age   Offline      -       0
  9 Power_On_Hours          0x0000   100   100   000    Old_age   Offline      -       4
 12 Power_Cycle_Count       0x0000   100   100   000    Old_age   Offline      -       2
148 Total_SLC_Erase_Ct      0x0000   100   100   000    Old_age   Offline      -       19
149 Max_SLC_Erase_Ct        0x0000   100   100   000    Old_age   Offline      -       2
150 Min_SLC_Erase_Ct        0x0000   100   100   000    Old_age   Offline      -       0
151 Average_SLC_Erase_Ct    0x0000   100   100   000    Old_age   Offline      -       1
159 DRAM_1_Bit_Error_Count  0x0000   100   100   000    Old_age   Offline      -       0
160 Uncorrectable_Error_Cnt 0x0000   100   100   000    Old_age   Offline      -       0
161 Valid_Spare_Block_Cnt   0x0000   100   100   000    Old_age   Offline      -       37
164 Total_Erase_Count       0x0000   100   100   000    Old_age   Offline      -       1487
165 Max_Erase_Count         0x0000   100   100   000    Old_age   Offline      -       6
166 Min_Erase_Count         0x0000   100   100   000    Old_age   Offline      -       2
167 Average_Erase_Count     0x0000   100   100   000    Old_age   Offline      -       2
169 Remaining_Lifetime_Perc 0x0000   100   100   000    Old_age   Offline      -       100
177 Wear_Leveling_Count     0x0000   100   100   050    Old_age   Offline      -       0
181 Program_Fail_Cnt_Total  0x0000   100   100   000    Old_age   Offline      -       0
182 Erase_Fail_Count_Total  0x0000   100   100   000    Old_age   Offline      -       0
192 Power-Off_Retract_Count 0x0000   100   100   000    Old_age   Offline      -       0
194 Temperature_Celsius     0x0000   043   063   000    Old_age   Offline      -       43
195 Hardware_ECC_Recovered  0x0000   100   100   000    Old_age   Offline      -       0
196 Reallocated_Event_Count 0x0000   100   100   016    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0000   100   100   050    Old_age   Offline      -       0
231 SSD_Life_Left           0x0000   100   100   000    Old_age   Offline      -       100
232 Available_Reservd_Space 0x0000   100   100   000    Old_age   Offline      -       100
241 Host_Writes_32MiB       0x0000   100   100   000    Old_age   Offline      -       13512
242 Host_Reads_32MiB        0x0000   100   100   000    Old_age   Offline      -       0
245 TLC_Writes_32MiB        0x0000   100   100   000    Old_age   Offline      -       24535

SMART Error Log Version: 1
Warning: ATA error count 0 inconsistent with error log pointer 1

ATA Error Count: 0
        CR = Command Register [HEX]
        FR = Features Register [HEX]
        SC = Sector Count Register [HEX]
        SN = Sector Number Register [HEX]
        CL = Cylinder Low Register [HEX]
        CH = Cylinder High Register [HEX]
        DH = Device/Head Register [HEX]
        DC = Device Command Register [HEX]
        ER = Error register [HEX]
        ST = Status register [HEX]
Powered_Up_Time is measured from power on, and printed as
DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
SS=sec, and sss=millisec. It "wraps" after 49.710 days.

Error 0 occurred at disk power-on lifetime: 0 hours (0 days + 0 hours)
  When the command that caused the error occurred, the device was in an unknown state.

  After command completion occurred, registers were:
  ER ST SC SN CL CH DH
  -- -- -- -- -- -- --
  00 ec 00 00 00 00 00

  Commands leading to the command that caused the error were:
  CR FR SC SN CL CH DH DC   Powered_Up_Time  Command/Feature_Name
  -- -- -- -- -- -- -- --  ----------------  --------------------
  ec 00 00 00 00 00 00 00      00:00:00.000  IDENTIFY DEVICE
  ec 00 00 00 00 00 00 00      00:00:00.000  IDENTIFY DEVICE
  ec 00 00 00 00 00 00 00      00:00:00.000  IDENTIFY DEVICE
  ec 00 00 00 00 00 00 00      00:00:00.000  IDENTIFY DEVICE
  c8 00 00 00 00 00 00 00      00:00:00.000  READ DMA

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%         4         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

The above only provides legacy SMART information - try 'smartctl -x' for more

I'm attaching the output of smartctl -a -x.

The SSD is in an Inateck enclosure currently connected over USB2.

Does this indicate a problem with the drive, a glitch (cat tripping over the cable or something like that ;)) or an issue in smartmontools?

Attachments (1)

Kingston-SKC600MS256G-smartx.log (17.5 KB ) - added by René Bertin 8 months ago.
smartctl -a -x /dev/sdc

Download all attachments as: .zip

Change History (9)

by René Bertin, 8 months ago

smartctl -a -x /dev/sdc

in reply to:  description comment:1 by René Bertin, 8 months ago

Replying to René Bertin:

That should be

smartctl 7.4 2023-08-01 r5530 [x86_64-linux-4.14.23-ck1-mainline-core2-rjvb] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
<SNIP>
The above only provides legacy SMART information - try 'smartctl -x' for more

I'm attaching the output of smartctl -a -x.

The SSD is in an Inateck enclosure currently connected over USB2.

Does this indicate a problem with the drive, a glitch (cat tripping over the cable or something like that ;)) or an issue in smartmontools?

comment:2 by Christian Franke, 8 months ago

Description: modified (diff)

comment:3 by Christian Franke, 8 months ago

Component: allsmartctl
Keywords: ata added
Milestone: Release 7.5

Thanks for the report. Smartctl checks only the error_log_pointer and not the ata_error_count to check whether the SMART Error Log is empty. This is the case since the very first version of smartmontools (see source:/trunk/sm5/ataprint.c@6#L397). This is possibly the first report of a device where this does no longer work.

As a consequence, the smartctl output of the legacy SMART Error Log is bogus in this case. This log (which supports only 28-bit LBA) is actually empty.

Does this indicate a problem with the drive, a glitch (cat tripping over the cable or something like that ;)) or an issue in smartmontools?

The Extended Comprehensive Error Log (supports 48-bit LBA) from the -x output is also empty, so there is no sign of device problems (or cat incidents ;)).

comment:4 by Christian Franke, 8 months ago

T13/BSR INCITS 529 - ATA Command Set4 (ACS-4) says:
"If there are no error log entries, the value of the error log index shall be zero."

Conclusion: This is a harmless firmware bug and this smartctl output is correct:
Warning: ATA error count 0 inconsistent with error log pointer 1

Smartctl should not print the bogus empty error entry in this case.

comment:5 by René Bertin, 8 months ago

Whew, I was hoping (and almost certain) that this would be the consensus, with all the zeroes in the supposed error. Good to know too that the bogus report will presumably be suppressed in a future release, because seeing pointless errors every time you check the drive is quite annoying...

(I have another drive that recorded an error because of a flaky connection to the controller at the very beginning of its life with me, I'd love to suppress that one ...)

comment:6 by Christian Franke, 8 months ago

Owner: set to Christian Franke
Status: newaccepted
Summary: "ATA error count X inconsistent with error log pointer" - trouble or bug?Don't print error log entries if error count is zero

comment:7 by Christian Franke, 8 months ago

Resolution: fixed
Status: acceptedclosed

comment:8 by Christian Franke, 8 months ago

If possible, please test a recent CI build from https://builds.smartmontools.org/.

Note: See TracTickets for help on using tickets.