diff options
Diffstat (limited to 'sys/dev/ciss/ciss.c')
-rw-r--r-- | sys/dev/ciss/ciss.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/ciss/ciss.c b/sys/dev/ciss/ciss.c index e892e50..016d5f3 100644 --- a/sys/dev/ciss/ciss.c +++ b/sys/dev/ciss/ciss.c @@ -3249,13 +3249,17 @@ ciss_cam_complete(struct ciss_request *cr) ce->sense_length, ce->residual_count); bzero(&csio->sense_data, SSD_FULL_SIZE); bcopy(&ce->sense_info[0], &csio->sense_data, ce->sense_length); - csio->sense_len = ce->sense_length; + if (csio->sense_len > ce->sense_length) + csio->sense_resid = csio->sense_len - ce->sense_length; + else + csio->sense_resid = 0; csio->resid = ce->residual_count; csio->ccb_h.status |= CAM_SCSI_STATUS_ERROR | CAM_AUTOSNS_VALID; #ifdef CISS_DEBUG { struct scsi_sense_data *sns = (struct scsi_sense_data *)&ce->sense_info[0]; - debug(0, "sense key %x", sns->flags & SSD_KEY); + debug(0, "sense key %x", scsi_get_sense_key(sns, csio->sense_len - + csio->sense_resid, /*show_errors*/ 1)); } #endif break; |