diff --git a/sm5/scsicmds.c b/sm5/scsicmds.c index 8a037b51b57bd144c647336678eb0b614a8b44b4..3eddcddc7df4e68ae03d850d74fb6fbb786ec442 100644 --- a/sm5/scsicmds.c +++ b/sm5/scsicmds.c @@ -46,7 +46,7 @@ #include "utility.h" #include "extern.h" -const char *scsicmds_c_cvsid="$Id: scsicmds.c,v 1.63 2003/11/18 13:44:46 dpgilbert Exp $" EXTERN_H_CVSID SCSICMDS_H_CVSID; +const char *scsicmds_c_cvsid="$Id: scsicmds.c,v 1.64 2003/11/19 06:09:37 dpgilbert Exp $" EXTERN_H_CVSID SCSICMDS_H_CVSID; /* for passing global control variables */ extern smartmonctrl *con; @@ -744,7 +744,7 @@ int scsiFetchIECmpage(int device, struct scsi_iec_mode_page *iecp, int modese_le iecp->requestedCurrent = 1; if (iecp->modese_len <= 6) { if ((err = scsiModeSense(device, INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, iecp->raw_curr, sizeof(iecp->raw_curr)))) { if (SIMPLE_ERR_BAD_OPCODE == err) iecp->modese_len = 10; @@ -757,7 +757,7 @@ int scsiFetchIECmpage(int device, struct scsi_iec_mode_page *iecp, int modese_le } if (10 == iecp->modese_len) { err = scsiModeSense10(device, INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, iecp->raw_curr, sizeof(iecp->raw_curr)); if (err) { iecp->modese_len = 0; @@ -768,11 +768,11 @@ int scsiFetchIECmpage(int device, struct scsi_iec_mode_page *iecp, int modese_le iecp->requestedChangeable = 1; if (10 == iecp->modese_len) err = scsiModeSense10(device, INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE, - MODE_PAGE_CONTROL_CHANGEABLE, + MPAGE_CONTROL_CHANGEABLE, iecp->raw_chg, sizeof(iecp->raw_chg)); else if (6 == iecp->modese_len) err = scsiModeSense(device, INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE, - MODE_PAGE_CONTROL_CHANGEABLE, + MPAGE_CONTROL_CHANGEABLE, iecp->raw_chg, sizeof(iecp->raw_chg)); if (err) return err; @@ -1565,7 +1565,7 @@ int scsiFetchExtendedSelfTestTime(int device, int * durationSec, int modese_len) memset(buff, 0, sizeof(buff)); if (modese_len <= 6) { if ((err = scsiModeSense(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)))) { if (SIMPLE_ERR_BAD_OPCODE == err) modese_len = 10; @@ -1576,7 +1576,7 @@ int scsiFetchExtendedSelfTestTime(int device, int * durationSec, int modese_len) } if (10 == modese_len) { err = scsiModeSense10(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)); if (err) return err; @@ -1736,16 +1736,17 @@ int scsiCountFailedSelfTests(int fd, int noisy) /* Returns a negative value if failed to fetch Contol mode page or it was malformed. Returns 0 if GLTSD bit is zero and returns 1 if the GLTSD - bit is set. */ -int scsiFetchControlGLTSD(int device, int modese_len) + bit is set. Examines default mode page when current==0 else examines + current mode page. */ +int scsiFetchControlGLTSD(int device, int modese_len, int current) { int err, offset; UINT8 buff[64]; + int pc = current ? MPAGE_CONTROL_CURRENT : MPAGE_CONTROL_DEFAULT; memset(buff, 0, sizeof(buff)); if (modese_len <= 6) { - if ((err = scsiModeSense(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + if ((err = scsiModeSense(device, CONTROL_MODE_PAGE, pc, buff, sizeof(buff)))) { if (SIMPLE_ERR_BAD_OPCODE == err) modese_len = 10; @@ -1755,8 +1756,7 @@ int scsiFetchControlGLTSD(int device, int modese_len) modese_len = 6; } if (10 == modese_len) { - err = scsiModeSense10(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + err = scsiModeSense10(device, CONTROL_MODE_PAGE, pc, buff, sizeof(buff)); if (err) return -EINVAL; @@ -1767,10 +1767,11 @@ int scsiFetchControlGLTSD(int device, int modese_len) return -EINVAL; } -/* Attempts to clear GLTSD bit in Control mode page. Returns 0 if +/* Attempts to set or clear GLTSD bit in Control mode page. If enabled is + 0 attempts to clear GLTSD otherwise it attempts to set it. Returns 0 if successful, negative if low level error, > 0 if higher level error (e.g. SIMPLE_ERR_BAD_PARAM if GLTSD bit is not changeable). */ -int scsiClearControlGLTSD(int device, int modese_len) +int scsiSetControlGLTSD(int device, int enabled, int modese_len) { int err, offset, resp_len, sp; UINT8 buff[64]; @@ -1779,7 +1780,7 @@ int scsiClearControlGLTSD(int device, int modese_len) memset(buff, 0, sizeof(buff)); if (modese_len <= 6) { if ((err = scsiModeSense(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)))) { if (SIMPLE_ERR_BAD_OPCODE == err) modese_len = 10; @@ -1790,7 +1791,7 @@ int scsiClearControlGLTSD(int device, int modese_len) } if (10 == modese_len) { err = scsiModeSense10(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)); if (err) return err; @@ -1798,15 +1799,19 @@ int scsiClearControlGLTSD(int device, int modese_len) offset = scsiModePageOffset(buff, sizeof(buff), modese_len); if ((offset < 0) || (buff[offset + 1] < 0xa)) return SIMPLE_ERR_BAD_RESP; - if (0 == (buff[offset + 2] & 2)) - return 0; /* already clear so nothing to do */ + + if (enabled) + enabled = 2; + if (enabled == (buff[offset + 2] & 2)) + return 0; /* GLTSD already in wanted state so nothing to do */ + if (modese_len == 6) err = scsiModeSense(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CHANGEABLE, + MPAGE_CONTROL_CHANGEABLE, ch_buff, sizeof(ch_buff)); else err = scsiModeSense10(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CHANGEABLE, + MPAGE_CONTROL_CHANGEABLE, ch_buff, sizeof(ch_buff)); if (err) return err; @@ -1822,7 +1827,10 @@ int scsiClearControlGLTSD(int device, int modese_len) } sp = (buff[offset] & 0x80) ? 1 : 0; /* PS bit becomes 'SELECT's SP bit */ buff[offset] &= 0x7f; /* mask off PS bit */ - buff[offset + 2] &= 0xfd; /* clear GLTSD bit in buff */ + if (enabled) + buff[offset + 2] |= 0x2; /* set GLTSD bit */ + else + buff[offset + 2] &= 0xfd; /* clear GLTSD bit */ if (10 == modese_len) err = scsiModeSelect10(device, sp, buff, resp_len); else if (6 == modese_len) @@ -1841,7 +1849,7 @@ int scsiFetchTransportProtocol(int device, int modese_len) memset(buff, 0, sizeof(buff)); if (modese_len <= 6) { if ((err = scsiModeSense(device, PROTOCOL_SPECIFIC_PORT_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)))) { if (SIMPLE_ERR_BAD_OPCODE == err) modese_len = 10; @@ -1852,7 +1860,7 @@ int scsiFetchTransportProtocol(int device, int modese_len) } if (10 == modese_len) { err = scsiModeSense10(device, PROTOCOL_SPECIFIC_PORT_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)); if (err) return -EINVAL; diff --git a/sm5/scsicmds.cpp b/sm5/scsicmds.cpp index d3af2bbb6afaaf5aaa1ae94f4dcbc4231b8572d1..941e2dae3767b9ec81638f1d4ae5843751e16348 100644 --- a/sm5/scsicmds.cpp +++ b/sm5/scsicmds.cpp @@ -46,7 +46,7 @@ #include "utility.h" #include "extern.h" -const char *scsicmds_c_cvsid="$Id: scsicmds.cpp,v 1.63 2003/11/18 13:44:46 dpgilbert Exp $" EXTERN_H_CVSID SCSICMDS_H_CVSID; +const char *scsicmds_c_cvsid="$Id: scsicmds.cpp,v 1.64 2003/11/19 06:09:37 dpgilbert Exp $" EXTERN_H_CVSID SCSICMDS_H_CVSID; /* for passing global control variables */ extern smartmonctrl *con; @@ -744,7 +744,7 @@ int scsiFetchIECmpage(int device, struct scsi_iec_mode_page *iecp, int modese_le iecp->requestedCurrent = 1; if (iecp->modese_len <= 6) { if ((err = scsiModeSense(device, INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, iecp->raw_curr, sizeof(iecp->raw_curr)))) { if (SIMPLE_ERR_BAD_OPCODE == err) iecp->modese_len = 10; @@ -757,7 +757,7 @@ int scsiFetchIECmpage(int device, struct scsi_iec_mode_page *iecp, int modese_le } if (10 == iecp->modese_len) { err = scsiModeSense10(device, INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, iecp->raw_curr, sizeof(iecp->raw_curr)); if (err) { iecp->modese_len = 0; @@ -768,11 +768,11 @@ int scsiFetchIECmpage(int device, struct scsi_iec_mode_page *iecp, int modese_le iecp->requestedChangeable = 1; if (10 == iecp->modese_len) err = scsiModeSense10(device, INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE, - MODE_PAGE_CONTROL_CHANGEABLE, + MPAGE_CONTROL_CHANGEABLE, iecp->raw_chg, sizeof(iecp->raw_chg)); else if (6 == iecp->modese_len) err = scsiModeSense(device, INFORMATIONAL_EXCEPTIONS_CONTROL_PAGE, - MODE_PAGE_CONTROL_CHANGEABLE, + MPAGE_CONTROL_CHANGEABLE, iecp->raw_chg, sizeof(iecp->raw_chg)); if (err) return err; @@ -1565,7 +1565,7 @@ int scsiFetchExtendedSelfTestTime(int device, int * durationSec, int modese_len) memset(buff, 0, sizeof(buff)); if (modese_len <= 6) { if ((err = scsiModeSense(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)))) { if (SIMPLE_ERR_BAD_OPCODE == err) modese_len = 10; @@ -1576,7 +1576,7 @@ int scsiFetchExtendedSelfTestTime(int device, int * durationSec, int modese_len) } if (10 == modese_len) { err = scsiModeSense10(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)); if (err) return err; @@ -1736,16 +1736,17 @@ int scsiCountFailedSelfTests(int fd, int noisy) /* Returns a negative value if failed to fetch Contol mode page or it was malformed. Returns 0 if GLTSD bit is zero and returns 1 if the GLTSD - bit is set. */ -int scsiFetchControlGLTSD(int device, int modese_len) + bit is set. Examines default mode page when current==0 else examines + current mode page. */ +int scsiFetchControlGLTSD(int device, int modese_len, int current) { int err, offset; UINT8 buff[64]; + int pc = current ? MPAGE_CONTROL_CURRENT : MPAGE_CONTROL_DEFAULT; memset(buff, 0, sizeof(buff)); if (modese_len <= 6) { - if ((err = scsiModeSense(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + if ((err = scsiModeSense(device, CONTROL_MODE_PAGE, pc, buff, sizeof(buff)))) { if (SIMPLE_ERR_BAD_OPCODE == err) modese_len = 10; @@ -1755,8 +1756,7 @@ int scsiFetchControlGLTSD(int device, int modese_len) modese_len = 6; } if (10 == modese_len) { - err = scsiModeSense10(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + err = scsiModeSense10(device, CONTROL_MODE_PAGE, pc, buff, sizeof(buff)); if (err) return -EINVAL; @@ -1767,10 +1767,11 @@ int scsiFetchControlGLTSD(int device, int modese_len) return -EINVAL; } -/* Attempts to clear GLTSD bit in Control mode page. Returns 0 if +/* Attempts to set or clear GLTSD bit in Control mode page. If enabled is + 0 attempts to clear GLTSD otherwise it attempts to set it. Returns 0 if successful, negative if low level error, > 0 if higher level error (e.g. SIMPLE_ERR_BAD_PARAM if GLTSD bit is not changeable). */ -int scsiClearControlGLTSD(int device, int modese_len) +int scsiSetControlGLTSD(int device, int enabled, int modese_len) { int err, offset, resp_len, sp; UINT8 buff[64]; @@ -1779,7 +1780,7 @@ int scsiClearControlGLTSD(int device, int modese_len) memset(buff, 0, sizeof(buff)); if (modese_len <= 6) { if ((err = scsiModeSense(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)))) { if (SIMPLE_ERR_BAD_OPCODE == err) modese_len = 10; @@ -1790,7 +1791,7 @@ int scsiClearControlGLTSD(int device, int modese_len) } if (10 == modese_len) { err = scsiModeSense10(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)); if (err) return err; @@ -1798,15 +1799,19 @@ int scsiClearControlGLTSD(int device, int modese_len) offset = scsiModePageOffset(buff, sizeof(buff), modese_len); if ((offset < 0) || (buff[offset + 1] < 0xa)) return SIMPLE_ERR_BAD_RESP; - if (0 == (buff[offset + 2] & 2)) - return 0; /* already clear so nothing to do */ + + if (enabled) + enabled = 2; + if (enabled == (buff[offset + 2] & 2)) + return 0; /* GLTSD already in wanted state so nothing to do */ + if (modese_len == 6) err = scsiModeSense(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CHANGEABLE, + MPAGE_CONTROL_CHANGEABLE, ch_buff, sizeof(ch_buff)); else err = scsiModeSense10(device, CONTROL_MODE_PAGE, - MODE_PAGE_CONTROL_CHANGEABLE, + MPAGE_CONTROL_CHANGEABLE, ch_buff, sizeof(ch_buff)); if (err) return err; @@ -1822,7 +1827,10 @@ int scsiClearControlGLTSD(int device, int modese_len) } sp = (buff[offset] & 0x80) ? 1 : 0; /* PS bit becomes 'SELECT's SP bit */ buff[offset] &= 0x7f; /* mask off PS bit */ - buff[offset + 2] &= 0xfd; /* clear GLTSD bit in buff */ + if (enabled) + buff[offset + 2] |= 0x2; /* set GLTSD bit */ + else + buff[offset + 2] &= 0xfd; /* clear GLTSD bit */ if (10 == modese_len) err = scsiModeSelect10(device, sp, buff, resp_len); else if (6 == modese_len) @@ -1841,7 +1849,7 @@ int scsiFetchTransportProtocol(int device, int modese_len) memset(buff, 0, sizeof(buff)); if (modese_len <= 6) { if ((err = scsiModeSense(device, PROTOCOL_SPECIFIC_PORT_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)))) { if (SIMPLE_ERR_BAD_OPCODE == err) modese_len = 10; @@ -1852,7 +1860,7 @@ int scsiFetchTransportProtocol(int device, int modese_len) } if (10 == modese_len) { err = scsiModeSense10(device, PROTOCOL_SPECIFIC_PORT_PAGE, - MODE_PAGE_CONTROL_CURRENT, + MPAGE_CONTROL_CURRENT, buff, sizeof(buff)); if (err) return -EINVAL; diff --git a/sm5/scsicmds.h b/sm5/scsicmds.h index 7bfe8f18aa76c4810dd6419aff1e2e89e833e223..d9a177559340725673dd51d41d2045bf6cec486d 100644 --- a/sm5/scsicmds.h +++ b/sm5/scsicmds.h @@ -32,7 +32,7 @@ #ifndef SCSICMDS_H_ #define SCSICMDS_H_ -#define SCSICMDS_H_CVSID "$Id: scsicmds.h,v 1.41 2003/11/18 13:46:05 dpgilbert Exp $\n" +#define SCSICMDS_H_CVSID "$Id: scsicmds.h,v 1.42 2003/11/19 06:08:46 dpgilbert Exp $\n" #include <stdio.h> #include <stdlib.h> @@ -200,8 +200,10 @@ Documentation, see http://www.storage.ibm.com/techsup/hddtech/prodspecs.htm */ #define ALL_MODE_PAGES 0x3f /* Mode page control field */ -#define MODE_PAGE_CONTROL_CURRENT 0 -#define MODE_PAGE_CONTROL_CHANGEABLE 1 +#define MPAGE_CONTROL_CURRENT 0 +#define MPAGE_CONTROL_CHANGEABLE 1 +#define MPAGE_CONTROL_DEFAULT 2 +#define MPAGE_CONTROL_SAVED 3 /* defines for useful SCSI Status codes */ #define SCSI_STATUS_CHECK_CONDITION 0x2 @@ -290,8 +292,8 @@ void scsiDecodeNonMediumErrPage(unsigned char * resp, int scsiFetchExtendedSelfTestTime(int device, int * durationSec, int modese_len); int scsiCountFailedSelfTests(int fd, int noisy); -int scsiFetchControlGLTSD(int device, int modese_len); -int scsiClearControlGLTSD(int device, int modese_len); +int scsiFetchControlGLTSD(int device, int modese_len, int current); +int scsiSetControlGLTSD(int device, int enabled, int modese_len); int scsiFetchTransportProtocol(int device, int modese_len); /* T10 Standard IE Additional Sense Code strings taken from t10.org */ diff --git a/sm5/scsiprint.c b/sm5/scsiprint.c index 4e0d285cb386cf181057ad75ebaeac080245c764..bdfbcf8f11e5e6d7c3a97447a515ddc24c4de23c 100644 --- a/sm5/scsiprint.c +++ b/sm5/scsiprint.c @@ -40,7 +40,7 @@ #define GBUF_SIZE 65535 -const char* scsiprint_c_cvsid="$Id: scsiprint.c,v 1.65 2003/11/18 16:53:00 ballen4705 Exp $" +const char* scsiprint_c_cvsid="$Id: scsiprint.c,v 1.66 2003/11/19 06:11:01 dpgilbert Exp $" EXTERN_H_CVSID SCSICMDS_H_CVSID SCSIPRINT_H_CVSID SMARTCTL_H_CVSID UTILITY_H_CVSID; // control block which points to external global control variables @@ -834,15 +834,17 @@ int scsiPrintMain(int fd) } if (con->smartautosaveenable) { - if (scsiClearControlGLTSD(fd, modese_len)) { + if (scsiSetControlGLTSD(fd, 0, modese_len)) { pout("Enable autosave (clear GLTSD bit) failed\n"); failuretest(OPTIONAL_CMD,returnval |= FAILSMART); } } if (con->smartautosavedisable) { - // Doug, this is where we should have a corresponding disable - // GLTSD -- mimic structure just above, please + if (scsiSetControlGLTSD(fd, 1, modese_len)) { + pout("Disbale autosave (set GLTSD bit) failed\n"); + failuretest(OPTIONAL_CMD,returnval |= FAILSMART); + } } if (con->checksmart) { @@ -878,7 +880,7 @@ int scsiPrintMain(int fd) } if (con->smarterrorlog) { scsiPrintErrorCounterLog(fd); - if (1 == scsiFetchControlGLTSD(fd, modese_len)) + if (1 == scsiFetchControlGLTSD(fd, modese_len, 1)) pout("\n[GLTSD (global logging target save disable) set. " "Enable save with '-S on']\n"); } diff --git a/sm5/scsiprint.cpp b/sm5/scsiprint.cpp index 5afcd560510e4b686f6752a862e4071ef1503739..29e3f03a862f6ad4792b8e3f5005876866c4c1e0 100644 --- a/sm5/scsiprint.cpp +++ b/sm5/scsiprint.cpp @@ -40,7 +40,7 @@ #define GBUF_SIZE 65535 -const char* scsiprint_c_cvsid="$Id: scsiprint.cpp,v 1.65 2003/11/18 16:53:00 ballen4705 Exp $" +const char* scsiprint_c_cvsid="$Id: scsiprint.cpp,v 1.66 2003/11/19 06:11:01 dpgilbert Exp $" EXTERN_H_CVSID SCSICMDS_H_CVSID SCSIPRINT_H_CVSID SMARTCTL_H_CVSID UTILITY_H_CVSID; // control block which points to external global control variables @@ -834,15 +834,17 @@ int scsiPrintMain(int fd) } if (con->smartautosaveenable) { - if (scsiClearControlGLTSD(fd, modese_len)) { + if (scsiSetControlGLTSD(fd, 0, modese_len)) { pout("Enable autosave (clear GLTSD bit) failed\n"); failuretest(OPTIONAL_CMD,returnval |= FAILSMART); } } if (con->smartautosavedisable) { - // Doug, this is where we should have a corresponding disable - // GLTSD -- mimic structure just above, please + if (scsiSetControlGLTSD(fd, 1, modese_len)) { + pout("Disbale autosave (set GLTSD bit) failed\n"); + failuretest(OPTIONAL_CMD,returnval |= FAILSMART); + } } if (con->checksmart) { @@ -878,7 +880,7 @@ int scsiPrintMain(int fd) } if (con->smarterrorlog) { scsiPrintErrorCounterLog(fd); - if (1 == scsiFetchControlGLTSD(fd, modese_len)) + if (1 == scsiFetchControlGLTSD(fd, modese_len, 1)) pout("\n[GLTSD (global logging target save disable) set. " "Enable save with '-S on']\n"); } diff --git a/sm5/smartd.c b/sm5/smartd.c index ab5f6c59c8057ea30c7f3245cec1e305a770162a..2f35ff5caee22628e875074d818ff1a1f8426a7a 100644 --- a/sm5/smartd.c +++ b/sm5/smartd.c @@ -65,7 +65,7 @@ extern const char *atacmdnames_c_cvsid, *atacmds_c_cvsid, *ataprint_c_cvsid, *escalade_c_cvsid, *knowndrives_c_cvsid, *os_XXXX_c_cvsid, *scsicmds_c_cvsid, *utility_c_cvsid; -const char *smartd_c_cvsid="$Id: smartd.c,v 1.243 2003/11/18 16:53:00 ballen4705 Exp $" +const char *smartd_c_cvsid="$Id: smartd.c,v 1.244 2003/11/19 06:12:40 dpgilbert Exp $" ATACMDS_H_CVSID ATAPRINT_H_CVSID CONFIG_H_CVSID EXTERN_H_CVSID KNOWNDRIVES_H_CVSID SCSICMDS_H_CVSID SMARTD_H_CVSID UTILITY_H_CVSID; @@ -1107,12 +1107,15 @@ static int SCSIDeviceScan(cfgfile *cfg) { // disable autosave (set GLTSD bit) if (cfg->autosave==1){ - // Doug, fill in by following the pattern immediately below + if (scsiSetControlGLTSD(fd, 1, cfg->modese_len)) + PrintOut(LOG_INFO,"Device: %s, could not disable autosave (set GLTSD bit).\n",device); + else + PrintOut(LOG_INFO,"Device: %s, disabled autosave (set GLTSD bit).\n",device); } // or enable autosave (clear GLTSD bit) if (cfg->autosave==2){ - if (scsiClearControlGLTSD(fd, cfg->modese_len)) + if (scsiSetControlGLTSD(fd, 0, cfg->modese_len)) PrintOut(LOG_INFO,"Device: %s, could not enable autosave (clear GLTSD bit).\n",device); else PrintOut(LOG_INFO,"Device: %s, enabled autosave (clear GLTSD bit).\n",device); diff --git a/sm5/smartd.cpp b/sm5/smartd.cpp index 3da0772547e71c76d83cf347314e03bcb7d377a0..e2171aece1c0a3f769cb0ef5d26285bbdf9355c2 100644 --- a/sm5/smartd.cpp +++ b/sm5/smartd.cpp @@ -65,7 +65,7 @@ extern const char *atacmdnames_c_cvsid, *atacmds_c_cvsid, *ataprint_c_cvsid, *escalade_c_cvsid, *knowndrives_c_cvsid, *os_XXXX_c_cvsid, *scsicmds_c_cvsid, *utility_c_cvsid; -const char *smartd_c_cvsid="$Id: smartd.cpp,v 1.243 2003/11/18 16:53:00 ballen4705 Exp $" +const char *smartd_c_cvsid="$Id: smartd.cpp,v 1.244 2003/11/19 06:12:40 dpgilbert Exp $" ATACMDS_H_CVSID ATAPRINT_H_CVSID CONFIG_H_CVSID EXTERN_H_CVSID KNOWNDRIVES_H_CVSID SCSICMDS_H_CVSID SMARTD_H_CVSID UTILITY_H_CVSID; @@ -1107,12 +1107,15 @@ static int SCSIDeviceScan(cfgfile *cfg) { // disable autosave (set GLTSD bit) if (cfg->autosave==1){ - // Doug, fill in by following the pattern immediately below + if (scsiSetControlGLTSD(fd, 1, cfg->modese_len)) + PrintOut(LOG_INFO,"Device: %s, could not disable autosave (set GLTSD bit).\n",device); + else + PrintOut(LOG_INFO,"Device: %s, disabled autosave (set GLTSD bit).\n",device); } // or enable autosave (clear GLTSD bit) if (cfg->autosave==2){ - if (scsiClearControlGLTSD(fd, cfg->modese_len)) + if (scsiSetControlGLTSD(fd, 0, cfg->modese_len)) PrintOut(LOG_INFO,"Device: %s, could not enable autosave (clear GLTSD bit).\n",device); else PrintOut(LOG_INFO,"Device: %s, enabled autosave (clear GLTSD bit).\n",device);