forked from Minki/linux
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:
parent
0d6f7e3a18
commit
bbb89e3d7a
@ -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) {
|
||||
/* All other functions, except for READ. */
|
||||
unsigned long flags;
|
||||
|
||||
/*
|
||||
* 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
|
||||
* request sense has completed
|
||||
*/
|
||||
if (stat & ERR_STAT) {
|
||||
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);
|
||||
goto end_request;
|
||||
|
||||
} else if (blk_fs_request(rq)) {
|
||||
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
|
||||
processing */
|
||||
|
||||
if (do_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);
|
||||
if (do_end_request)
|
||||
goto end_request;
|
||||
|
||||
cdrom_queue_request_sense(drive, rq->sense, rq);
|
||||
} else
|
||||
cdrom_end_request(drive, 0);
|
||||
} else {
|
||||
/* If we got a CHECK_CONDITION status,
|
||||
queue a request sense command. */
|
||||
if (stat & ERR_STAT)
|
||||
cdrom_queue_request_sense(drive, NULL, NULL);
|
||||
}
|
||||
/*
|
||||
* If we got a CHECK_CONDITION status,
|
||||
* queue a request sense command.
|
||||
*/
|
||||
if (stat & ERR_STAT)
|
||||
cdrom_queue_request_sense(drive, NULL, NULL);
|
||||
} else {
|
||||
blk_dump_rq_flags(rq, "ide-cd: bad rq");
|
||||
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. */
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user