summaryrefslogtreecommitdiffstats
path: root/drivers/ide/ide-atapi.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-04-20 10:03:01 -0400
committerJens Axboe <axboe@fb.com>2017-04-20 14:16:10 -0400
commit17d5363b83f8c73ef9109f75a4a9b578f31d842f (patch)
tree07eabf4d2ef1bbba0f5db8dcd8dba4178b5f502c /drivers/ide/ide-atapi.c
parentd19633d5375b8f4735c389c80865dfbf0474992a (diff)
scsi: introduce a result field in struct scsi_request
This passes on the scsi_cmnd result field to users of passthrough requests. Currently we abuse req->errors for this purpose, but that field will go away in its current form. Note that the old IDE code abuses the errors field in very creative ways and stores all kinds of different values in it. I didn't dare to touch this magic, so the abuses are brought forward 1:1. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Bart Van Assche <Bart.VanAssche@sandisk.com> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers/ide/ide-atapi.c')
-rw-r--r--drivers/ide/ide-atapi.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c
index 1524797e1776..5901937284e7 100644
--- a/drivers/ide/ide-atapi.c
+++ b/drivers/ide/ide-atapi.c
@@ -108,7 +108,7 @@ int ide_queue_pc_tail(ide_drive_t *drive, struct gendisk *disk,
108 if (drive->media == ide_tape) 108 if (drive->media == ide_tape)
109 scsi_req(rq)->cmd[13] = REQ_IDETAPE_PC1; 109 scsi_req(rq)->cmd[13] = REQ_IDETAPE_PC1;
110 blk_execute_rq(drive->queue, disk, rq, 0); 110 blk_execute_rq(drive->queue, disk, rq, 0);
111 error = rq->errors ? -EIO : 0; 111 error = scsi_req(rq)->result ? -EIO : 0;
112put_req: 112put_req:
113 blk_put_request(rq); 113 blk_put_request(rq);
114 return error; 114 return error;
@@ -455,7 +455,7 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
455 debug_log("%s: I/O error\n", drive->name); 455 debug_log("%s: I/O error\n", drive->name);
456 456
457 if (drive->media != ide_tape) 457 if (drive->media != ide_tape)
458 pc->rq->errors++; 458 scsi_req(pc->rq)->result++;
459 459
460 if (scsi_req(rq)->cmd[0] == REQUEST_SENSE) { 460 if (scsi_req(rq)->cmd[0] == REQUEST_SENSE) {
461 printk(KERN_ERR PFX "%s: I/O error in request " 461 printk(KERN_ERR PFX "%s: I/O error in request "
@@ -489,13 +489,13 @@ static ide_startstop_t ide_pc_intr(ide_drive_t *drive)
489 drive->failed_pc = NULL; 489 drive->failed_pc = NULL;
490 490
491 if (ata_misc_request(rq)) { 491 if (ata_misc_request(rq)) {
492 rq->errors = 0; 492 scsi_req(rq)->result = 0;
493 error = 0; 493 error = 0;
494 } else { 494 } else {
495 495
496 if (blk_rq_is_passthrough(rq) && uptodate <= 0) { 496 if (blk_rq_is_passthrough(rq) && uptodate <= 0) {
497 if (rq->errors == 0) 497 if (scsi_req(rq)->result == 0)
498 rq->errors = -EIO; 498 scsi_req(rq)->result = -EIO;
499 } 499 }
500 500
501 error = uptodate ? 0 : -EIO; 501 error = uptodate ? 0 : -EIO;