diff options
author | Tejun Heo <tj@kernel.org> | 2009-04-22 22:05:19 -0400 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-04-28 01:37:35 -0400 |
commit | 40cbbb781d3eba5d6ac0860db078af490e5c7c6b (patch) | |
tree | dec374543cf045fc630bccddbb7646c695094b0d /block | |
parent | b243ddcbe9be146172baa544dadecebf156eda0e (diff) |
block: implement and use [__]blk_end_request_all()
There are many [__]blk_end_request() call sites which call it with
full request length and expect full completion. Many of them ensure
that the request actually completes by doing BUG_ON() the return
value, which is awkward and error-prone.
This patch adds [__]blk_end_request_all() which takes @rq and @error
and fully completes the request. BUG_ON() is added to to ensure that
this actually happens.
Most conversions are simple but there are a few noteworthy ones.
* cdrom/viocd: viocd_end_request() replaced with direct calls to
__blk_end_request_all().
* s390/block/dasd: dasd_end_request() replaced with direct calls to
__blk_end_request_all().
* s390/char/tape_block: tapeblock_end_request() replaced with direct
calls to blk_end_request_all().
[ Impact: cleanup ]
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Russell King <rmk@arm.linux.org.uk>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Mike Miller <mike.miller@hp.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Jeff Garzik <jgarzik@pobox.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Jeremy Fitzhardinge <jeremy@xensource.com>
Cc: Alex Dubov <oakad@yahoo.com>
Cc: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'block')
-rw-r--r-- | block/blk-barrier.c | 9 | ||||
-rw-r--r-- | block/blk-core.c | 2 | ||||
-rw-r--r-- | block/elevator.c | 2 |
3 files changed, 4 insertions, 9 deletions
diff --git a/block/blk-barrier.c b/block/blk-barrier.c index 20b4111fa050..c8d087655eff 100644 --- a/block/blk-barrier.c +++ b/block/blk-barrier.c | |||
@@ -106,10 +106,7 @@ bool blk_ordered_complete_seq(struct request_queue *q, unsigned seq, int error) | |||
106 | */ | 106 | */ |
107 | q->ordseq = 0; | 107 | q->ordseq = 0; |
108 | rq = q->orig_bar_rq; | 108 | rq = q->orig_bar_rq; |
109 | 109 | __blk_end_request_all(rq, q->orderr); | |
110 | if (__blk_end_request(rq, q->orderr, blk_rq_bytes(rq))) | ||
111 | BUG(); | ||
112 | |||
113 | return true; | 110 | return true; |
114 | } | 111 | } |
115 | 112 | ||
@@ -252,9 +249,7 @@ bool blk_do_ordered(struct request_queue *q, struct request **rqp) | |||
252 | * with prejudice. | 249 | * with prejudice. |
253 | */ | 250 | */ |
254 | elv_dequeue_request(q, rq); | 251 | elv_dequeue_request(q, rq); |
255 | if (__blk_end_request(rq, -EOPNOTSUPP, | 252 | __blk_end_request_all(rq, -EOPNOTSUPP); |
256 | blk_rq_bytes(rq))) | ||
257 | BUG(); | ||
258 | *rqp = NULL; | 253 | *rqp = NULL; |
259 | return false; | 254 | return false; |
260 | } | 255 | } |
diff --git a/block/blk-core.c b/block/blk-core.c index b84250d3019b..0520cc704585 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -1780,7 +1780,7 @@ struct request *elv_next_request(struct request_queue *q) | |||
1780 | break; | 1780 | break; |
1781 | } else if (ret == BLKPREP_KILL) { | 1781 | } else if (ret == BLKPREP_KILL) { |
1782 | rq->cmd_flags |= REQ_QUIET; | 1782 | rq->cmd_flags |= REQ_QUIET; |
1783 | __blk_end_request(rq, -EIO, blk_rq_bytes(rq)); | 1783 | __blk_end_request_all(rq, -EIO); |
1784 | } else { | 1784 | } else { |
1785 | printk(KERN_ERR "%s: bad return=%d\n", __func__, ret); | 1785 | printk(KERN_ERR "%s: bad return=%d\n", __func__, ret); |
1786 | break; | 1786 | break; |
diff --git a/block/elevator.c b/block/elevator.c index b03b8752e18b..1af5d9f04aff 100644 --- a/block/elevator.c +++ b/block/elevator.c | |||
@@ -810,7 +810,7 @@ void elv_abort_queue(struct request_queue *q) | |||
810 | rq = list_entry_rq(q->queue_head.next); | 810 | rq = list_entry_rq(q->queue_head.next); |
811 | rq->cmd_flags |= REQ_QUIET; | 811 | rq->cmd_flags |= REQ_QUIET; |
812 | trace_block_rq_abort(q, rq); | 812 | trace_block_rq_abort(q, rq); |
813 | __blk_end_request(rq, -EIO, blk_rq_bytes(rq)); | 813 | __blk_end_request_all(rq, -EIO); |
814 | } | 814 | } |
815 | } | 815 | } |
816 | EXPORT_SYMBOL(elv_abort_queue); | 816 | EXPORT_SYMBOL(elv_abort_queue); |