diff options
author | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-27 12:46:42 +0100 |
---|---|---|
committer | Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> | 2009-03-27 12:46:42 +0100 |
commit | 2230d90dd889e35da2728b6f6ebf25fb5a6499bd (patch) | |
tree | 857e571d9eda201e18eaa5dabf31ff795b5af4d2 | |
parent | d364c7f50b3bb6dc77259974038567b821e2cf0a (diff) | |
download | blackbird-op-linux-2230d90dd889e35da2728b6f6ebf25fb5a6499bd.tar.gz blackbird-op-linux-2230d90dd889e35da2728b6f6ebf25fb5a6499bd.zip |
ide: sanitize ide_finish_cmd()
* Move ide_end_request() call out from ide_finish_cmd() to its users.
* Use ide_finish_cmd() in task_no_data_intr().
There should be no functional changes caused by this patch.
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
-rw-r--r-- | drivers/ide/ide-dma.c | 5 | ||||
-rw-r--r-- | drivers/ide/ide-taskfile.c | 24 |
2 files changed, 13 insertions, 16 deletions
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c index cba9fe585d87..820e5104ba47 100644 --- a/drivers/ide/ide-dma.c +++ b/drivers/ide/ide-dma.c @@ -98,7 +98,10 @@ ide_startstop_t ide_dma_intr(ide_drive_t *drive) if (!dma_stat) { struct ide_cmd *cmd = &hwif->cmd; - ide_finish_cmd(drive, cmd, stat); + if ((cmd->tf_flags & IDE_TFLAG_FS) == 0) + ide_finish_cmd(drive, cmd, stat); + else + ide_end_request(drive, 1, cmd->rq->nr_sectors); return ide_stopped; } printk(KERN_ERR "%s: %s: bad DMA status (0x%02x)\n", diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c index bbf7740d58a5..f99a6aaad9eb 100644 --- a/drivers/ide/ide-taskfile.c +++ b/drivers/ide/ide-taskfile.c @@ -155,12 +155,8 @@ static ide_startstop_t task_no_data_intr(ide_drive_t *drive) if (blk_pm_request(rq)) ide_complete_pm_rq(drive, rq); - else { - u8 err = ide_read_error(drive); - - ide_complete_cmd(drive, cmd, stat, err); - ide_complete_rq(drive, err); - } + else + ide_finish_cmd(drive, cmd, stat); } return ide_stopped; @@ -293,15 +289,10 @@ static void ide_error_cmd(ide_drive_t *drive, struct ide_cmd *cmd) void ide_finish_cmd(ide_drive_t *drive, struct ide_cmd *cmd, u8 stat) { - if ((cmd->tf_flags & IDE_TFLAG_FS) == 0) { - u8 err = ide_read_error(drive); + u8 err = ide_read_error(drive); - ide_complete_cmd(drive, cmd, stat, err); - ide_complete_rq(drive, err); - return; - } - - ide_end_request(drive, 1, cmd->rq->nr_sectors); + ide_complete_cmd(drive, cmd, stat, err); + ide_complete_rq(drive, err); } /* @@ -356,7 +347,10 @@ out_wait: ide_set_handler(drive, &task_pio_intr, WAIT_WORSTCASE, NULL); return ide_started; out_end: - ide_finish_cmd(drive, cmd, stat); + if ((cmd->tf_flags & IDE_TFLAG_FS) == 0) + ide_finish_cmd(drive, cmd, stat); + else + ide_end_request(drive, 1, cmd->rq->nr_sectors); return ide_stopped; out_err: ide_error_cmd(drive, cmd); |