summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWojciech Piekutowski <wojciech@piekutowski.net>2011-04-12 00:36:45 +0200
committerWojciech Piekutowski <wojciech@piekutowski.net>2011-04-12 00:36:45 +0200
commit58bb50928070e9de39c794e2bc2038dfb252f429 (patch)
tree3b14260cd49ce21c1be0f82daabe80fe93e4f290
parentdebfdd6b14c54981af16b091c3bd7646b1d27d70 (diff)
Handle duplicated Total LBAs Written
-rw-r--r--atasmart.c46
1 files changed, 30 insertions, 16 deletions
diff --git a/atasmart.c b/atasmart.c
index cc35600..38e43f3 100644
--- a/atasmart.c
+++ b/atasmart.c
@@ -1346,22 +1346,23 @@ static const SkSmartAttributeInfo const attribute_info[256] = {
/* %STRINGPOOLSTOP% */
typedef enum SkSmartQuirk {
- SK_SMART_QUIRK_9_POWERONMINUTES = 0x0001,
- SK_SMART_QUIRK_9_POWERONSECONDS = 0x0002,
- SK_SMART_QUIRK_9_POWERONHALFMINUTES = 0x0004,
- SK_SMART_QUIRK_192_EMERGENCYRETRACTCYCLECT = 0x0008,
- SK_SMART_QUIRK_193_LOADUNLOAD = 0x0010,
- SK_SMART_QUIRK_194_10XCELSIUS = 0x0020,
- SK_SMART_QUIRK_194_UNKNOWN = 0x0040,
- SK_SMART_QUIRK_200_WRITEERRORCOUNT = 0x0080,
- SK_SMART_QUIRK_201_DETECTEDTACOUNT = 0x0100,
- SK_SMART_QUIRK_5_UNKNOWN = 0x0200,
- SK_SMART_QUIRK_9_UNKNOWN = 0x0400,
- SK_SMART_QUIRK_197_UNKNOWN = 0x0800,
- SK_SMART_QUIRK_198_UNKNOWN = 0x1000,
- SK_SMART_QUIRK_190_UNKNOWN = 0x2000,
- SK_SMART_QUIRK_232_AVAILABLERESERVEDSPACE = 0x4000,
- SK_SMART_QUIRK_233_MEDIAWEAROUTINDICATOR = 0x8000
+ SK_SMART_QUIRK_9_POWERONMINUTES = 0x00001,
+ SK_SMART_QUIRK_9_POWERONSECONDS = 0x00002,
+ SK_SMART_QUIRK_9_POWERONHALFMINUTES = 0x00004,
+ SK_SMART_QUIRK_192_EMERGENCYRETRACTCYCLECT = 0x00008,
+ SK_SMART_QUIRK_193_LOADUNLOAD = 0x00010,
+ SK_SMART_QUIRK_194_10XCELSIUS = 0x00020,
+ SK_SMART_QUIRK_194_UNKNOWN = 0x00040,
+ SK_SMART_QUIRK_200_WRITEERRORCOUNT = 0x00080,
+ SK_SMART_QUIRK_201_DETECTEDTACOUNT = 0x00100,
+ SK_SMART_QUIRK_5_UNKNOWN = 0x00200,
+ SK_SMART_QUIRK_9_UNKNOWN = 0x00400,
+ SK_SMART_QUIRK_197_UNKNOWN = 0x00800,
+ SK_SMART_QUIRK_198_UNKNOWN = 0x01000,
+ SK_SMART_QUIRK_190_UNKNOWN = 0x02000,
+ SK_SMART_QUIRK_232_AVAILABLERESERVEDSPACE = 0x04000,
+ SK_SMART_QUIRK_233_MEDIAWEAROUTINDICATOR = 0x08000,
+ SK_SMART_QUIRK_225_TOTALLBASWRITTEN = 0x10000
} SkSmartQuirk;
/* %STRINGPOOLSTART% */
@@ -1537,6 +1538,7 @@ static const SkSmartQuirkDatabase quirk_database[] = { {
/*** Intel */
"^INTEL SSDSA2CW[0-9]{3}G3$",
NULL,
+ SK_SMART_QUIRK_225_TOTALLBASWRITTEN|
SK_SMART_QUIRK_232_AVAILABLERESERVEDSPACE|
SK_SMART_QUIRK_233_MEDIAWEAROUTINDICATOR
}, {
@@ -1720,6 +1722,18 @@ static const SkSmartAttributeInfo *lookup_attribute(SkDisk *d, uint8_t id) {
break;
+ case 225:
+ /* %STRINGPOOLSTART% */
+ if (quirk & SK_SMART_QUIRK_225_TOTALLBASWRITTEN) {
+ static const SkSmartAttributeInfo a = {
+ "total-lbas-written", SK_SMART_ATTRIBUTE_UNIT_GB, NULL
+ };
+ return &a;
+ }
+ /* %STRINGPOOLSTOP% */
+
+ break;
+
case 232:
/* %STRINGPOOLSTART% */
if (quirk & SK_SMART_QUIRK_232_AVAILABLERESERVEDSPACE) {