struct vscsibk_info *info = pending_req->info;
int notify;
int more_to_do = 1;
+ struct scsi_sense_hdr sshdr;
unsigned long flags;
DPRINTK("%s\n",__FUNCTION__);
ring_res->rqid = pending_req->rqid;
if (sense_buffer != NULL) {
- memcpy(ring_res->sense_buffer, sense_buffer,
- VSCSIIF_SENSE_BUFFERSIZE);
- ring_res->sense_len = VSCSIIF_SENSE_BUFFERSIZE;
+ if (scsi_normalize_sense(sense_buffer,
+ sizeof(sense_buffer), &sshdr)) {
+
+ int len = 8 + sense_buffer[7];
+
+ if (len > VSCSIIF_SENSE_BUFFERSIZE)
+ len = VSCSIIF_SENSE_BUFFERSIZE;
+
+ memcpy(ring_res->sense_buffer, sense_buffer, len);
+ ring_res->sense_len = len;
+ }
} else {
ring_res->sense_len = 0;
}