Commit fa0e5198 authored by Jens Axboe's avatar Jens Axboe Committed by Linus Torvalds

[PATCH] return full SCSI status byte in SG_IO

This has been around for a while. Return the full scsi result byte in
rq->errors for SG_IO generated requests.
Signed-off-by: default avatarJens Axboe <axboe@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent d3069b4d
...@@ -293,11 +293,11 @@ static int sg_io(struct file *file, request_queue_t *q, ...@@ -293,11 +293,11 @@ static int sg_io(struct file *file, request_queue_t *q,
blk_execute_rq(q, bd_disk, rq); blk_execute_rq(q, bd_disk, rq);
/* write to all output members */ /* write to all output members */
hdr->status = rq->errors; hdr->status = 0xff & rq->errors;
hdr->masked_status = (hdr->status >> 1) & 0x1f; hdr->masked_status = status_byte(rq->errors);
hdr->msg_status = 0; hdr->msg_status = msg_byte(rq->errors);
hdr->host_status = 0; hdr->host_status = host_byte(rq->errors);
hdr->driver_status = 0; hdr->driver_status = driver_byte(rq->errors);
hdr->info = 0; hdr->info = 0;
if (hdr->masked_status || hdr->host_status || hdr->driver_status) if (hdr->masked_status || hdr->host_status || hdr->driver_status)
hdr->info |= SG_INFO_CHECK; hdr->info |= SG_INFO_CHECK;
......
...@@ -712,8 +712,7 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes, ...@@ -712,8 +712,7 @@ void scsi_io_completion(struct scsi_cmnd *cmd, unsigned int good_bytes,
} }
if (blk_pc_request(req)) { /* SG_IO ioctl from block level */ if (blk_pc_request(req)) { /* SG_IO ioctl from block level */
req->errors = (driver_byte(result) & DRIVER_SENSE) ? req->errors = result;
(CHECK_CONDITION << 1) : (result & 0xff);
if (result) { if (result) {
clear_errors = 0; clear_errors = 0;
if (scsi_command_normalize_sense(cmd, &sshdr)) { if (scsi_command_normalize_sense(cmd, &sshdr)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment