ide-cd: unify request end exit path in cdrom_decode_status()
There should be no functionality changes caused by this patch. Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
@@ -332,7 +332,6 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
|
|||||||
|
|
||||||
} else if (blk_pc_request(rq) || rq->cmd_type == REQ_TYPE_ATA_PC) {
|
} else if (blk_pc_request(rq) || rq->cmd_type == REQ_TYPE_ATA_PC) {
|
||||||
/* All other functions, except for READ. */
|
/* All other functions, except for READ. */
|
||||||
unsigned long flags;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* if we have an error, pass back CHECK_CONDITION as the
|
* if we have an error, pass back CHECK_CONDITION as the
|
||||||
@@ -370,15 +369,7 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
|
|||||||
* remove failed request completely and end it when the
|
* remove failed request completely and end it when the
|
||||||
* request sense has completed
|
* request sense has completed
|
||||||
*/
|
*/
|
||||||
if (stat & ERR_STAT) {
|
goto end_request;
|
||||||
spin_lock_irqsave(&ide_lock, flags);
|
|
||||||
blkdev_dequeue_request(rq);
|
|
||||||
HWGROUP(drive)->rq = NULL;
|
|
||||||
spin_unlock_irqrestore(&ide_lock, flags);
|
|
||||||
|
|
||||||
cdrom_queue_request_sense(drive, rq->sense, rq);
|
|
||||||
} else
|
|
||||||
cdrom_end_request(drive, 0);
|
|
||||||
|
|
||||||
} else if (blk_fs_request(rq)) {
|
} else if (blk_fs_request(rq)) {
|
||||||
int do_end_request = 0;
|
int do_end_request = 0;
|
||||||
@@ -458,23 +449,15 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
|
|||||||
sense data. We need this in order to perform end of media
|
sense data. We need this in order to perform end of media
|
||||||
processing */
|
processing */
|
||||||
|
|
||||||
if (do_end_request) {
|
if (do_end_request)
|
||||||
if (stat & ERR_STAT) {
|
goto end_request;
|
||||||
unsigned long flags;
|
|
||||||
spin_lock_irqsave(&ide_lock, flags);
|
|
||||||
blkdev_dequeue_request(rq);
|
|
||||||
HWGROUP(drive)->rq = NULL;
|
|
||||||
spin_unlock_irqrestore(&ide_lock, flags);
|
|
||||||
|
|
||||||
cdrom_queue_request_sense(drive, rq->sense, rq);
|
/*
|
||||||
} else
|
* If we got a CHECK_CONDITION status,
|
||||||
cdrom_end_request(drive, 0);
|
* queue a request sense command.
|
||||||
} else {
|
*/
|
||||||
/* If we got a CHECK_CONDITION status,
|
if (stat & ERR_STAT)
|
||||||
queue a request sense command. */
|
cdrom_queue_request_sense(drive, NULL, NULL);
|
||||||
if (stat & ERR_STAT)
|
|
||||||
cdrom_queue_request_sense(drive, NULL, NULL);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
blk_dump_rq_flags(rq, "ide-cd: bad rq");
|
blk_dump_rq_flags(rq, "ide-cd: bad rq");
|
||||||
cdrom_end_request(drive, 0);
|
cdrom_end_request(drive, 0);
|
||||||
@@ -482,6 +465,21 @@ static int cdrom_decode_status(ide_drive_t *drive, int good_stat, int *stat_ret)
|
|||||||
|
|
||||||
/* Retry, or handle the next request. */
|
/* Retry, or handle the next request. */
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
end_request:
|
||||||
|
if (stat & ERR_STAT) {
|
||||||
|
unsigned long flags;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&ide_lock, flags);
|
||||||
|
blkdev_dequeue_request(rq);
|
||||||
|
HWGROUP(drive)->rq = NULL;
|
||||||
|
spin_unlock_irqrestore(&ide_lock, flags);
|
||||||
|
|
||||||
|
cdrom_queue_request_sense(drive, rq->sense, rq);
|
||||||
|
} else
|
||||||
|
cdrom_end_request(drive, 0);
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cdrom_timer_expiry(ide_drive_t *drive)
|
static int cdrom_timer_expiry(ide_drive_t *drive)
|
||||||
|
Reference in New Issue
Block a user