Skip to content
Snippets Groups Projects
Commit 215626fe authored by chrfranke's avatar chrfranke
Browse files

Add forgotten SCSI sense checks to class usbjmicron_device

git-svn-id: https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/trunk@2749 4ea69e1a-61f1-4043-bf83-b5c94c648137
parent 14c53659
No related branches found
No related tags found
No related merge requests found
CHANGELOG for smartmontools
$Id: CHANGELOG,v 1.779 2009/03/03 20:23:55 chrfranke Exp $
$Id: CHANGELOG,v 1.780 2009/03/06 22:23:04 chrfranke Exp $
The most recent version of this file is:
http://smartmontools.cvs.sourceforge.net/smartmontools/sm5/CHANGELOG?view=markup
......@@ -41,6 +41,8 @@ NOTES FOR FUTURE RELEASES: see TODO file.
<DEVELOPERS: ADDITIONS TO THE CHANGE LOG GO JUST BELOW HERE, PLEASE>
[CF] Add forgotten SCSI sense checks to class usbjmicron_device.
[CF] Add new SMART STATUS check command for JMicron USB bridges.
Should support also older chip versions and prevents a race
condition.
......
......@@ -51,7 +51,7 @@
#include "dev_ata_cmd_set.h" // ata_device_with_command_set
#include "dev_tunnelled.h" // tunnelled_device<>
const char *scsiata_c_cvsid="$Id: scsiata.cpp,v 1.23 2009/03/03 20:23:55 chrfranke Exp $"
const char *scsiata_c_cvsid="$Id: scsiata.cpp,v 1.24 2009/03/06 22:23:04 chrfranke Exp $"
CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID SCSICMDS_H_CVSID SCSIATA_H_CVSID UTILITY_H_CVSID;
/* for passing global control variables */
......@@ -938,6 +938,16 @@ bool usbjmicron_device::ata_pass_through(const ata_cmd_in & in, ata_cmd_out & ou
return set_err(scsidev->get_err());
}
scsi_sense_disect sinfo;
scsi_do_sense_disect(&io_hdr, &sinfo);
int err = scsiSimpleSenseFilter(&sinfo);
if (err) {
if (con->reportscsiioctl > 0)
pout("usbjmicron_device::ata_pass_through: scsi error: %s\n",
scsiErrString(err));
return set_err(EIO, "scsi error %s", scsiErrString(err));
}
if (in.out_needed.is_set()) {
if (is_smart_status) {
switch (smart_status) {
......@@ -1013,6 +1023,16 @@ bool usbjmicron_device::get_registers(unsigned short addr,
return set_err(scsidev->get_err());
}
scsi_sense_disect sinfo;
scsi_do_sense_disect(&io_hdr, &sinfo);
int err = scsiSimpleSenseFilter(&sinfo);
if (err) {
if (con->reportscsiioctl > 0)
pout("usbjmicron_device::get_registers: scsi error: %s\n",
scsiErrString(err));
return set_err(EIO, "scsi error %s", scsiErrString(err));
}
return true;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment