diff options
| -rw-r--r-- | drivers/ide/ide-io.c | 34 | ||||
| -rw-r--r-- | drivers/ide/ide-probe.c | 2 | ||||
| -rw-r--r-- | include/linux/ide.h | 1 |
3 files changed, 3 insertions, 34 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index bcbaeb50bb93..8d50df4526a4 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
| @@ -55,22 +55,9 @@ | |||
| 55 | #include <asm/io.h> | 55 | #include <asm/io.h> |
| 56 | #include <asm/bitops.h> | 56 | #include <asm/bitops.h> |
| 57 | 57 | ||
| 58 | void ide_softirq_done(struct request *rq) | ||
| 59 | { | ||
| 60 | request_queue_t *q = rq->q; | ||
| 61 | |||
| 62 | add_disk_randomness(rq->rq_disk); | ||
| 63 | end_that_request_chunk(rq, 1, rq->data_len); | ||
| 64 | |||
| 65 | spin_lock_irq(q->queue_lock); | ||
| 66 | end_that_request_last(rq, 1); | ||
| 67 | spin_unlock_irq(q->queue_lock); | ||
| 68 | } | ||
| 69 | |||
| 70 | int __ide_end_request(ide_drive_t *drive, struct request *rq, int uptodate, | 58 | int __ide_end_request(ide_drive_t *drive, struct request *rq, int uptodate, |
| 71 | int nr_sectors) | 59 | int nr_sectors) |
| 72 | { | 60 | { |
| 73 | unsigned int nbytes; | ||
| 74 | int ret = 1; | 61 | int ret = 1; |
| 75 | 62 | ||
| 76 | BUG_ON(!(rq->flags & REQ_STARTED)); | 63 | BUG_ON(!(rq->flags & REQ_STARTED)); |
| @@ -94,27 +81,12 @@ int __ide_end_request(ide_drive_t *drive, struct request *rq, int uptodate, | |||
| 94 | HWGROUP(drive)->hwif->ide_dma_on(drive); | 81 | HWGROUP(drive)->hwif->ide_dma_on(drive); |
| 95 | } | 82 | } |
| 96 | 83 | ||
| 97 | /* | 84 | if (!end_that_request_first(rq, uptodate, nr_sectors)) { |
| 98 | * For partial completions (or non fs/pc requests), use the regular | 85 | add_disk_randomness(rq->rq_disk); |
| 99 | * direct completion path. Same thing for requests that failed, to | ||
| 100 | * preserve the ->errors value we use the normal completion path | ||
| 101 | * for those | ||
| 102 | */ | ||
| 103 | nbytes = nr_sectors << 9; | ||
| 104 | if (!rq->errors && rq_all_done(rq, nbytes)) { | ||
| 105 | rq->data_len = nbytes; | ||
| 106 | blkdev_dequeue_request(rq); | 86 | blkdev_dequeue_request(rq); |
| 107 | HWGROUP(drive)->rq = NULL; | 87 | HWGROUP(drive)->rq = NULL; |
| 108 | blk_complete_request(rq); | 88 | end_that_request_last(rq, uptodate); |
| 109 | ret = 0; | 89 | ret = 0; |
| 110 | } else { | ||
| 111 | if (!end_that_request_first(rq, uptodate, nr_sectors)) { | ||
| 112 | add_disk_randomness(rq->rq_disk); | ||
| 113 | blkdev_dequeue_request(rq); | ||
| 114 | HWGROUP(drive)->rq = NULL; | ||
| 115 | end_that_request_last(rq, uptodate); | ||
| 116 | ret = 0; | ||
| 117 | } | ||
| 118 | } | 90 | } |
| 119 | 91 | ||
| 120 | return ret; | 92 | return ret; |
diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c index 7cb2d86601db..e7425546b4b1 100644 --- a/drivers/ide/ide-probe.c +++ b/drivers/ide/ide-probe.c | |||
| @@ -1011,8 +1011,6 @@ static int ide_init_queue(ide_drive_t *drive) | |||
| 1011 | blk_queue_max_hw_segments(q, max_sg_entries); | 1011 | blk_queue_max_hw_segments(q, max_sg_entries); |
| 1012 | blk_queue_max_phys_segments(q, max_sg_entries); | 1012 | blk_queue_max_phys_segments(q, max_sg_entries); |
| 1013 | 1013 | ||
| 1014 | blk_queue_softirq_done(q, ide_softirq_done); | ||
| 1015 | |||
| 1016 | /* assign drive queue */ | 1014 | /* assign drive queue */ |
| 1017 | drive->queue = q; | 1015 | drive->queue = q; |
| 1018 | 1016 | ||
diff --git a/include/linux/ide.h b/include/linux/ide.h index 9a8c05dbe4f3..f2e1b5b22898 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
| @@ -1002,7 +1002,6 @@ extern int noautodma; | |||
| 1002 | 1002 | ||
| 1003 | extern int ide_end_request (ide_drive_t *drive, int uptodate, int nrsecs); | 1003 | extern int ide_end_request (ide_drive_t *drive, int uptodate, int nrsecs); |
| 1004 | extern int __ide_end_request (ide_drive_t *drive, struct request *rq, int uptodate, int nrsecs); | 1004 | extern int __ide_end_request (ide_drive_t *drive, struct request *rq, int uptodate, int nrsecs); |
| 1005 | extern void ide_softirq_done(struct request *rq); | ||
| 1006 | 1005 | ||
| 1007 | /* | 1006 | /* |
| 1008 | * This is used on exit from the driver to designate the next irq handler | 1007 | * This is used on exit from the driver to designate the next irq handler |
