Skip to content

Commit 75c320d

Browse files
authored
Change Virtium SSD which doesn't support SmartCMD, to use only smartctl (#522)
- Description Add support for Virtium SSD which can't use SmartCMD - to use only smartctl (using generic ssd info parser). - Motivation and Context There are Virtium SSDs which can't receive SSD info from 'SmartCMD', and must use 'smartctl' command. For those SSDs, after calling the generic ssd parser, the function is finished and the specific vendor parser won't be called. - How Has This Been Tested? I tested it manually with a special Virtium SSD which doesn't support SmartCMD - Additional Information (Optional) output after the change: root@sonic:/home/admin# show platform ssdhealth Disk Type : NVME Device Model : Virtium VTPM24CEXI080-BM110006 Health : 100.0% Temperature : 52.0C output before the change: root@sonic:/home/admin# show platform ssdhealth [Error] Cannot read SMART information on device /dev/nvme0n1 Disk Type : NVME Device Model : Virtium VTPM24CEXI080-BM110006 Health : N/A Temperature : 51.0C
1 parent 9ca0f69 commit 75c320d

File tree

1 file changed

+14
-9
lines changed
  • sonic_platform_base/sonic_storage

1 file changed

+14
-9
lines changed

sonic_platform_base/sonic_storage/ssd.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,15 @@ def __init__(self, diskdev):
7979
self.log = syslogger.SysLogger(self.log_identifier)
8080

8181
self.vendor_ssd_utility = {
82-
"Generic" : { "utility" : SMARTCTL, "parser" : self.parse_generic_ssd_info },
83-
"InnoDisk" : { "utility" : INNODISK, "parser" : self.parse_innodisk_info },
84-
"M.2" : { "utility" : INNODISK, "parser" : self.parse_innodisk_info },
85-
"StorFly" : { "utility" : VIRTIUM, "parser" : self.parse_virtium_info },
86-
"Virtium" : { "utility" : VIRTIUM, "parser" : self.parse_virtium_info },
87-
"Swissbit" : { "utility" : SMARTCTL, "parser" : self.parse_swissbit_info },
88-
"Micron" : { "utility" : SMARTCTL, "parser" : self.parse_micron_info },
89-
"Intel" : { "utility" : SMARTCTL, "parser" : self.parse_intel_info },
90-
"Transcend" : { "utility" : TRANSCEND, "parser" : self.parse_transcend_info },
82+
"Generic" : { "utility" : SMARTCTL, "parser" : self.parse_generic_ssd_info },
83+
"InnoDisk" : { "utility" : INNODISK, "parser" : self.parse_innodisk_info },
84+
"M.2" : { "utility" : INNODISK, "parser" : self.parse_innodisk_info },
85+
"StorFly" : { "utility" : VIRTIUM, "parser" : self.parse_virtium_info },
86+
"Virtium" : { "utility" : VIRTIUM, "parser" : self.parse_virtium_info },
87+
"Swissbit" : { "utility" : SMARTCTL, "parser" : self.parse_swissbit_info },
88+
"Micron" : { "utility" : SMARTCTL, "parser" : self.parse_micron_info },
89+
"Intel" : { "utility" : SMARTCTL, "parser" : self.parse_intel_info },
90+
"Transcend" : { "utility" : TRANSCEND, "parser" : self.parse_transcend_info },
9191
}
9292

9393
self.dev = diskdev
@@ -103,6 +103,11 @@ def fetch_parse_info(self, diskdev):
103103

104104
# Known vendor part
105105
if self.model:
106+
# For some Virtium SSDs, parse_generic_ssd_info should be called.
107+
# Since it was called above, no need to parse a specific vendor SSD info.
108+
if self.model in ['Virtium VTPM24CEXI080-BM110006']:
109+
return
110+
106111
vendor = self._parse_vendor()
107112
if vendor:
108113
try:

0 commit comments

Comments
 (0)