diff --git a/sm5/CHANGELOG b/sm5/CHANGELOG index 0b5488849abf0ee642184fe9aa6021a547c8a973..2ae11453bd34d715858da2ac7ccc63845cd1af0d 100644 --- a/sm5/CHANGELOG +++ b/sm5/CHANGELOG @@ -1,6 +1,6 @@ CHANGELOG for smartmontools -$Id: CHANGELOG,v 1.632 2007/09/06 19:00:21 chrfranke Exp $ +$Id: CHANGELOG,v 1.633 2007/09/14 20:52:14 chrfranke Exp $ The most recent version of this file is: http://smartmontools.cvs.sourceforge.net/smartmontools/sm5/CHANGELOG?view=markup @@ -33,6 +33,8 @@ NOTES FOR FUTURE RELEASES: see TODO file. <DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE> + [CF] Fixed regression in SMART STATUS command on Win9x/ME. + [BA] Fixed 3ware issue with new controllers. Documentation said that one could address up to 24 disks on a single controller, but in fact one was limited to 16 disks. This is now fixed: diff --git a/sm5/os_win32.cpp b/sm5/os_win32.cpp index 3a78d357faf73f56d5bcdf9fb5a0e255b960e3f0..7c1ab22a4ffb58caee35883bf9609dfa8daca539 100644 --- a/sm5/os_win32.cpp +++ b/sm5/os_win32.cpp @@ -44,7 +44,7 @@ extern int64_t bytes; // malloc() byte count // Needed by '-V' option (CVS versioning) of smartd/smartctl -const char *os_XXXX_c_cvsid="$Id: os_win32.cpp,v 1.57 2007/08/19 14:29:45 chrfranke Exp $" +const char *os_XXXX_c_cvsid="$Id: os_win32.cpp,v 1.58 2007/09/14 20:52:14 chrfranke Exp $" ATACMDS_H_CVSID CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID SCSICMDS_H_CVSID UTILITY_H_CVSID; @@ -197,12 +197,14 @@ static const char * skipdev(const char * s) int guess_device_type (const char * dev_name) { dev_name = skipdev(dev_name); + if (!strncmp(dev_name, "scsi", 4)) + return CONTROLLER_SCSI; + if (is_win9x()) + return CONTROLLER_ATA; if (!strncmp(dev_name, "hd", 2)) return CONTROLLER_ATA; if (!strncmp(dev_name, "tw_cli", 6)) return CONTROLLER_ATA; - if (!strncmp(dev_name, "scsi", 4)) - return CONTROLLER_SCSI; if (!strncmp(dev_name, "st", 2)) return CONTROLLER_SCSI; if (!strncmp(dev_name, "nst", 3)) @@ -680,11 +682,9 @@ static int smart_ioctl(HANDLE hdevice, int drive, IDEREGS * regs, char * data, u } else { code = SMART_SEND_DRIVE_COMMAND; name = "SMART_SEND_DRIVE_COMMAND"; - if (regs->bFeaturesReg == ATA_SMART_STATUS) { + if (regs->bFeaturesReg == ATA_SMART_STATUS) size_out = sizeof(IDEREGS); // ioctl returns new IDEREGS as data // Note: cBufferSize must be 0 on Win9x - inpar.cBufferSize = size_out; - } else size_out = 0; }