diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG index 5bf311fa5aa214a3761a33ddfa962f224b5b87b4..cb53711894fc8811f9e882aec37b822ca529a033 100644 --- a/sm5/CHANGELOG +++ b/sm5/CHANGELOG @@ -1,6 +1,6 @@ CHANGELOG for smartmontools -$Id: CHANGELOG,v 1.746 2008/10/24 19:29:15 chrfranke Exp $ +$Id: CHANGELOG,v 1.747 2008/10/24 21:43:12 manfred99 Exp $ The most recent version of this file is: http://smartmontools.cvs.sourceforge.net/smartmontools/sm5/CHANGELOG?view=markup @@ -40,6 +40,11 @@ NOTES FOR FUTURE RELEASES: see TODO file. <DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE> + [MS] Workaround for huge raw values of Reallocated_Sector_Ct and + Reallocated_Event_Ct for newer Fujitsu disks (only the lower + 16 bits seem to be meaningful). Clip the display to 16 bits + and show the remaining part, if existent, in parens. Patch by [CF]. + [CF] smartd DEVICESCAN: Fix autodetection of SAT devices. Thanks to Stanislav Brabec for bug report and testing. diff --git a/sm5/atacmds.cpp b/sm5/atacmds.cpp index 97b1a424dc45c19683daece2a0b8d0ba6ba708ab..e24a75ba26409153a4f3e226c048dbe678b5a17d 100644 --- a/sm5/atacmds.cpp +++ b/sm5/atacmds.cpp @@ -39,7 +39,7 @@ #include <algorithm> // std::sort -const char *atacmds_c_cvsid="$Id: atacmds.cpp,v 1.208 2008/10/11 14:18:07 chrfranke Exp $" +const char *atacmds_c_cvsid="$Id: atacmds.cpp,v 1.209 2008/10/24 21:43:12 manfred99 Exp $" ATACMDS_H_CVSID CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID SCSIATA_H_CVSID UTILITY_H_CVSID; // for passing global control variables @@ -1836,6 +1836,12 @@ int64_t ataPrintSmartAttribRawValue(char *out, if (word[1]) out+=sprintf(out, " (Average %d)", word[1]); break; + // reallocated sector count + case 5: + out+=sprintf(out, "%u", word[0]); + if (word[1] || word[2]) + out+=sprintf(out, " (%u, %u)", word[2], word[1]); + break; // Power on time case 9: if (select==1){ @@ -1891,6 +1897,12 @@ int64_t ataPrintSmartAttribRawValue(char *out, else ataPrintTemperatureValue(out, attribute->raw, word); break; + // reallocated event count + case 196: + out+=sprintf(out, "%u", word[0]); + if (word[1] || word[2]) + out+=sprintf(out, " (%u, %u)", word[2], word[1]); + break; default: out+=sprintf(out, "%"PRIu64, rawvalue); }