diff options
45 files changed, 172 insertions, 207 deletions
diff --git a/arch/arm/plat-omap/mailbox.c b/arch/arm/plat-omap/mailbox.c index 7a1f5c25fd17..40424edae939 100644 --- a/arch/arm/plat-omap/mailbox.c +++ b/arch/arm/plat-omap/mailbox.c | |||
@@ -197,9 +197,7 @@ static void mbox_tx_work(struct work_struct *work) | |||
197 | struct omap_msg_tx_data *tx_data; | 197 | struct omap_msg_tx_data *tx_data; |
198 | 198 | ||
199 | spin_lock(q->queue_lock); | 199 | spin_lock(q->queue_lock); |
200 | rq = elv_next_request(q); | 200 | rq = blk_fetch_request(q); |
201 | if (rq) | ||
202 | blkdev_dequeue_request(rq); | ||
203 | spin_unlock(q->queue_lock); | 201 | spin_unlock(q->queue_lock); |
204 | 202 | ||
205 | if (!rq) | 203 | if (!rq) |
@@ -242,9 +240,7 @@ static void mbox_rx_work(struct work_struct *work) | |||
242 | 240 | ||
243 | while (1) { | 241 | while (1) { |
244 | spin_lock_irqsave(q->queue_lock, flags); | 242 | spin_lock_irqsave(q->queue_lock, flags); |
245 | rq = elv_next_request(q); | 243 | rq = blk_fetch_request(q); |
246 | if (rq) | ||
247 | blkdev_dequeue_request(rq); | ||
248 | spin_unlock_irqrestore(q->queue_lock, flags); | 244 | spin_unlock_irqrestore(q->queue_lock, flags); |
249 | if (!rq) | 245 | if (!rq) |
250 | break; | 246 | break; |
@@ -351,9 +347,7 @@ omap_mbox_read(struct device *dev, struct device_attribute *attr, char *buf) | |||
351 | 347 | ||
352 | while (1) { | 348 | while (1) { |
353 | spin_lock_irqsave(q->queue_lock, flags); | 349 | spin_lock_irqsave(q->queue_lock, flags); |
354 | rq = elv_next_request(q); | 350 | rq = blk_fetch_request(q); |
355 | if (rq) | ||
356 | blkdev_dequeue_request(rq); | ||
357 | spin_unlock_irqrestore(q->queue_lock, flags); | 351 | spin_unlock_irqrestore(q->queue_lock, flags); |
358 | 352 | ||
359 | if (!rq) | 353 | if (!rq) |
diff --git a/arch/um/drivers/ubd_kern.c b/arch/um/drivers/ubd_kern.c index 402ba8f70fc9..aa9e926e13d7 100644 --- a/arch/um/drivers/ubd_kern.c +++ b/arch/um/drivers/ubd_kern.c | |||
@@ -1228,12 +1228,11 @@ static void do_ubd_request(struct request_queue *q) | |||
1228 | while(1){ | 1228 | while(1){ |
1229 | struct ubd *dev = q->queuedata; | 1229 | struct ubd *dev = q->queuedata; |
1230 | if(dev->end_sg == 0){ | 1230 | if(dev->end_sg == 0){ |
1231 | struct request *req = elv_next_request(q); | 1231 | struct request *req = blk_fetch_request(q); |
1232 | if(req == NULL) | 1232 | if(req == NULL) |
1233 | return; | 1233 | return; |
1234 | 1234 | ||
1235 | dev->request = req; | 1235 | dev->request = req; |
1236 | blkdev_dequeue_request(req); | ||
1237 | dev->start_sg = 0; | 1236 | dev->start_sg = 0; |
1238 | dev->end_sg = blk_rq_map_sg(q, req, dev->sg); | 1237 | dev->end_sg = blk_rq_map_sg(q, req, dev->sg); |
1239 | } | 1238 | } |
diff --git a/block/blk-barrier.c b/block/blk-barrier.c index 8713c2fbc4f6..0ab81a0a7502 100644 --- a/block/blk-barrier.c +++ b/block/blk-barrier.c | |||
@@ -180,7 +180,7 @@ static inline bool start_ordered(struct request_queue *q, struct request **rqp) | |||
180 | } | 180 | } |
181 | 181 | ||
182 | /* stash away the original request */ | 182 | /* stash away the original request */ |
183 | elv_dequeue_request(q, rq); | 183 | blk_dequeue_request(rq); |
184 | q->orig_bar_rq = rq; | 184 | q->orig_bar_rq = rq; |
185 | rq = NULL; | 185 | rq = NULL; |
186 | 186 | ||
@@ -248,7 +248,7 @@ bool blk_do_ordered(struct request_queue *q, struct request **rqp) | |||
248 | * Queue ordering not supported. Terminate | 248 | * Queue ordering not supported. Terminate |
249 | * with prejudice. | 249 | * with prejudice. |
250 | */ | 250 | */ |
251 | elv_dequeue_request(q, rq); | 251 | blk_dequeue_request(rq); |
252 | __blk_end_request_all(rq, -EOPNOTSUPP); | 252 | __blk_end_request_all(rq, -EOPNOTSUPP); |
253 | *rqp = NULL; | 253 | *rqp = NULL; |
254 | return false; | 254 | return false; |
diff --git a/block/blk-core.c b/block/blk-core.c index 6226a380fb6d..93691d2ac5a0 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -902,6 +902,8 @@ EXPORT_SYMBOL(blk_get_request); | |||
902 | */ | 902 | */ |
903 | void blk_requeue_request(struct request_queue *q, struct request *rq) | 903 | void blk_requeue_request(struct request_queue *q, struct request *rq) |
904 | { | 904 | { |
905 | BUG_ON(blk_queued_rq(rq)); | ||
906 | |||
905 | blk_delete_timer(rq); | 907 | blk_delete_timer(rq); |
906 | blk_clear_rq_complete(rq); | 908 | blk_clear_rq_complete(rq); |
907 | trace_block_rq_requeue(q, rq); | 909 | trace_block_rq_requeue(q, rq); |
@@ -1610,28 +1612,6 @@ int blk_insert_cloned_request(struct request_queue *q, struct request *rq) | |||
1610 | } | 1612 | } |
1611 | EXPORT_SYMBOL_GPL(blk_insert_cloned_request); | 1613 | EXPORT_SYMBOL_GPL(blk_insert_cloned_request); |
1612 | 1614 | ||
1613 | /** | ||
1614 | * blkdev_dequeue_request - dequeue request and start timeout timer | ||
1615 | * @req: request to dequeue | ||
1616 | * | ||
1617 | * Dequeue @req and start timeout timer on it. This hands off the | ||
1618 | * request to the driver. | ||
1619 | * | ||
1620 | * Block internal functions which don't want to start timer should | ||
1621 | * call elv_dequeue_request(). | ||
1622 | */ | ||
1623 | void blkdev_dequeue_request(struct request *req) | ||
1624 | { | ||
1625 | elv_dequeue_request(req->q, req); | ||
1626 | |||
1627 | /* | ||
1628 | * We are now handing the request to the hardware, add the | ||
1629 | * timeout handler. | ||
1630 | */ | ||
1631 | blk_add_timer(req); | ||
1632 | } | ||
1633 | EXPORT_SYMBOL(blkdev_dequeue_request); | ||
1634 | |||
1635 | static void blk_account_io_completion(struct request *req, unsigned int bytes) | 1615 | static void blk_account_io_completion(struct request *req, unsigned int bytes) |
1636 | { | 1616 | { |
1637 | if (blk_do_io_stat(req)) { | 1617 | if (blk_do_io_stat(req)) { |
@@ -1671,7 +1651,23 @@ static void blk_account_io_done(struct request *req) | |||
1671 | } | 1651 | } |
1672 | } | 1652 | } |
1673 | 1653 | ||
1674 | struct request *elv_next_request(struct request_queue *q) | 1654 | /** |
1655 | * blk_peek_request - peek at the top of a request queue | ||
1656 | * @q: request queue to peek at | ||
1657 | * | ||
1658 | * Description: | ||
1659 | * Return the request at the top of @q. The returned request | ||
1660 | * should be started using blk_start_request() before LLD starts | ||
1661 | * processing it. | ||
1662 | * | ||
1663 | * Return: | ||
1664 | * Pointer to the request at the top of @q if available. Null | ||
1665 | * otherwise. | ||
1666 | * | ||
1667 | * Context: | ||
1668 | * queue_lock must be held. | ||
1669 | */ | ||
1670 | struct request *blk_peek_request(struct request_queue *q) | ||
1675 | { | 1671 | { |
1676 | struct request *rq; | 1672 | struct request *rq; |
1677 | int ret; | 1673 | int ret; |
@@ -1748,10 +1744,12 @@ struct request *elv_next_request(struct request_queue *q) | |||
1748 | 1744 | ||
1749 | return rq; | 1745 | return rq; |
1750 | } | 1746 | } |
1751 | EXPORT_SYMBOL(elv_next_request); | 1747 | EXPORT_SYMBOL(blk_peek_request); |
1752 | 1748 | ||
1753 | void elv_dequeue_request(struct request_queue *q, struct request *rq) | 1749 | void blk_dequeue_request(struct request *rq) |
1754 | { | 1750 | { |
1751 | struct request_queue *q = rq->q; | ||
1752 | |||
1755 | BUG_ON(list_empty(&rq->queuelist)); | 1753 | BUG_ON(list_empty(&rq->queuelist)); |
1756 | BUG_ON(ELV_ON_HASH(rq)); | 1754 | BUG_ON(ELV_ON_HASH(rq)); |
1757 | 1755 | ||
@@ -1767,6 +1765,58 @@ void elv_dequeue_request(struct request_queue *q, struct request *rq) | |||
1767 | } | 1765 | } |
1768 | 1766 | ||
1769 | /** | 1767 | /** |
1768 | * blk_start_request - start request processing on the driver | ||
1769 | * @req: request to dequeue | ||
1770 | * | ||
1771 | * Description: | ||
1772 | * Dequeue @req and start timeout timer on it. This hands off the | ||
1773 | * request to the driver. | ||
1774 | * | ||
1775 | * Block internal functions which don't want to start timer should | ||
1776 | * call blk_dequeue_request(). | ||
1777 | * | ||
1778 | * Context: | ||
1779 | * queue_lock must be held. | ||
1780 | */ | ||
1781 | void blk_start_request(struct request *req) | ||
1782 | { | ||
1783 | blk_dequeue_request(req); | ||
1784 | |||
1785 | /* | ||
1786 | * We are now handing the request to the hardware, add the | ||
1787 | * timeout handler. | ||
1788 | */ | ||
1789 | blk_add_timer(req); | ||
1790 | } | ||
1791 | EXPORT_SYMBOL(blk_start_request); | ||
1792 | |||
1793 | /** | ||
1794 | * blk_fetch_request - fetch a request from a request queue | ||
1795 | * @q: request queue to fetch a request from | ||
1796 | * | ||
1797 | * Description: | ||
1798 | * Return the request at the top of @q. The request is started on | ||
1799 | * return and LLD can start processing it immediately. | ||
1800 | * | ||
1801 | * Return: | ||
1802 | * Pointer to the request at the top of @q if available. Null | ||
1803 | * otherwise. | ||
1804 | * | ||
1805 | * Context: | ||
1806 | * queue_lock must be held. | ||
1807 | */ | ||
1808 | struct request *blk_fetch_request(struct request_queue *q) | ||
1809 | { | ||
1810 | struct request *rq; | ||
1811 | |||
1812 | rq = blk_peek_request(q); | ||
1813 | if (rq) | ||
1814 | blk_start_request(rq); | ||
1815 | return rq; | ||
1816 | } | ||
1817 | EXPORT_SYMBOL(blk_fetch_request); | ||
1818 | |||
1819 | /** | ||
1770 | * blk_update_request - Special helper function for request stacking drivers | 1820 | * blk_update_request - Special helper function for request stacking drivers |
1771 | * @rq: the request being processed | 1821 | * @rq: the request being processed |
1772 | * @error: %0 for success, < %0 for error | 1822 | * @error: %0 for success, < %0 for error |
@@ -1937,12 +1987,11 @@ static bool blk_update_bidi_request(struct request *rq, int error, | |||
1937 | */ | 1987 | */ |
1938 | static void blk_finish_request(struct request *req, int error) | 1988 | static void blk_finish_request(struct request *req, int error) |
1939 | { | 1989 | { |
1990 | BUG_ON(blk_queued_rq(req)); | ||
1991 | |||
1940 | if (blk_rq_tagged(req)) | 1992 | if (blk_rq_tagged(req)) |
1941 | blk_queue_end_tag(req->q, req); | 1993 | blk_queue_end_tag(req->q, req); |
1942 | 1994 | ||
1943 | if (blk_queued_rq(req)) | ||
1944 | elv_dequeue_request(req->q, req); | ||
1945 | |||
1946 | if (unlikely(laptop_mode) && blk_fs_request(req)) | 1995 | if (unlikely(laptop_mode) && blk_fs_request(req)) |
1947 | laptop_io_completion(); | 1996 | laptop_io_completion(); |
1948 | 1997 | ||
diff --git a/block/blk-tag.c b/block/blk-tag.c index 3c518e3303ae..c260f7c30dda 100644 --- a/block/blk-tag.c +++ b/block/blk-tag.c | |||
@@ -374,7 +374,7 @@ int blk_queue_start_tag(struct request_queue *q, struct request *rq) | |||
374 | rq->cmd_flags |= REQ_QUEUED; | 374 | rq->cmd_flags |= REQ_QUEUED; |
375 | rq->tag = tag; | 375 | rq->tag = tag; |
376 | bqt->tag_index[tag] = rq; | 376 | bqt->tag_index[tag] = rq; |
377 | blkdev_dequeue_request(rq); | 377 | blk_start_request(rq); |
378 | list_add(&rq->queuelist, &q->tag_busy_list); | 378 | list_add(&rq->queuelist, &q->tag_busy_list); |
379 | return 0; | 379 | return 0; |
380 | } | 380 | } |
diff --git a/block/blk.h b/block/blk.h index ab54529103c0..9e0042ca9495 100644 --- a/block/blk.h +++ b/block/blk.h | |||
@@ -13,6 +13,7 @@ extern struct kobj_type blk_queue_ktype; | |||
13 | void init_request_from_bio(struct request *req, struct bio *bio); | 13 | void init_request_from_bio(struct request *req, struct bio *bio); |
14 | void blk_rq_bio_prep(struct request_queue *q, struct request *rq, | 14 | void blk_rq_bio_prep(struct request_queue *q, struct request *rq, |
15 | struct bio *bio); | 15 | struct bio *bio); |
16 | void blk_dequeue_request(struct request *rq); | ||
16 | void __blk_queue_free_tags(struct request_queue *q); | 17 | void __blk_queue_free_tags(struct request_queue *q); |
17 | 18 | ||
18 | void blk_unplug_work(struct work_struct *work); | 19 | void blk_unplug_work(struct work_struct *work); |
diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c index 774ab05973a9..668dc234b8e2 100644 --- a/drivers/block/DAC960.c +++ b/drivers/block/DAC960.c | |||
@@ -3321,7 +3321,7 @@ static int DAC960_process_queue(DAC960_Controller_T *Controller, struct request_ | |||
3321 | DAC960_Command_T *Command; | 3321 | DAC960_Command_T *Command; |
3322 | 3322 | ||
3323 | while(1) { | 3323 | while(1) { |
3324 | Request = elv_next_request(req_q); | 3324 | Request = blk_peek_request(req_q); |
3325 | if (!Request) | 3325 | if (!Request) |
3326 | return 1; | 3326 | return 1; |
3327 | 3327 | ||
@@ -3341,7 +3341,7 @@ static int DAC960_process_queue(DAC960_Controller_T *Controller, struct request_ | |||
3341 | Command->BlockNumber = blk_rq_pos(Request); | 3341 | Command->BlockNumber = blk_rq_pos(Request); |
3342 | Command->BlockCount = blk_rq_sectors(Request); | 3342 | Command->BlockCount = blk_rq_sectors(Request); |
3343 | Command->Request = Request; | 3343 | Command->Request = Request; |
3344 | blkdev_dequeue_request(Request); | 3344 | blk_start_request(Request); |
3345 | Command->SegmentCount = blk_rq_map_sg(req_q, | 3345 | Command->SegmentCount = blk_rq_map_sg(req_q, |
3346 | Command->Request, Command->cmd_sglist); | 3346 | Command->Request, Command->cmd_sglist); |
3347 | /* pci_map_sg MAY change the value of SegCount */ | 3347 | /* pci_map_sg MAY change the value of SegCount */ |
diff --git a/drivers/block/amiflop.c b/drivers/block/amiflop.c index 80a68b2e0451..9c6e5b0fe894 100644 --- a/drivers/block/amiflop.c +++ b/drivers/block/amiflop.c | |||
@@ -1342,12 +1342,11 @@ static void redo_fd_request(void) | |||
1342 | int err; | 1342 | int err; |
1343 | 1343 | ||
1344 | next_req: | 1344 | next_req: |
1345 | rq = elv_next_request(floppy_queue); | 1345 | rq = blk_fetch_request(floppy_queue); |
1346 | if (!rq) { | 1346 | if (!rq) { |
1347 | /* Nothing left to do */ | 1347 | /* Nothing left to do */ |
1348 | return; | 1348 | return; |
1349 | } | 1349 | } |
1350 | blkdev_dequeue_request(rq); | ||
1351 | 1350 | ||
1352 | floppy = rq->rq_disk->private_data; | 1351 | floppy = rq->rq_disk->private_data; |
1353 | drive = floppy - unit; | 1352 | drive = floppy - unit; |
diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c index 89a591d9c83b..f5e7180d7f47 100644 --- a/drivers/block/ataflop.c +++ b/drivers/block/ataflop.c | |||
@@ -1404,10 +1404,9 @@ static void redo_fd_request(void) | |||
1404 | 1404 | ||
1405 | repeat: | 1405 | repeat: |
1406 | if (!fd_request) { | 1406 | if (!fd_request) { |
1407 | fd_request = elv_next_request(floppy_queue); | 1407 | fd_request = blk_fetch_request(floppy_queue); |
1408 | if (!fd_request) | 1408 | if (!fd_request) |
1409 | goto the_end; | 1409 | goto the_end; |
1410 | blkdev_dequeue_request(fd_request); | ||
1411 | } | 1410 | } |
1412 | 1411 | ||
1413 | floppy = fd_request->rq_disk->private_data; | 1412 | floppy = fd_request->rq_disk->private_data; |
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index ab7b04c0db70..e714e7cce6f2 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c | |||
@@ -2801,7 +2801,7 @@ static void do_cciss_request(struct request_queue *q) | |||
2801 | goto startio; | 2801 | goto startio; |
2802 | 2802 | ||
2803 | queue: | 2803 | queue: |
2804 | creq = elv_next_request(q); | 2804 | creq = blk_peek_request(q); |
2805 | if (!creq) | 2805 | if (!creq) |
2806 | goto startio; | 2806 | goto startio; |
2807 | 2807 | ||
@@ -2810,7 +2810,7 @@ static void do_cciss_request(struct request_queue *q) | |||
2810 | if ((c = cmd_alloc(h, 1)) == NULL) | 2810 | if ((c = cmd_alloc(h, 1)) == NULL) |
2811 | goto full; | 2811 | goto full; |
2812 | 2812 | ||
2813 | blkdev_dequeue_request(creq); | 2813 | blk_start_request(creq); |
2814 | 2814 | ||
2815 | spin_unlock_irq(q->queue_lock); | 2815 | spin_unlock_irq(q->queue_lock); |
2816 | 2816 | ||
diff --git a/drivers/block/cpqarray.c b/drivers/block/cpqarray.c index a5caeff4718e..a02dcfc00f13 100644 --- a/drivers/block/cpqarray.c +++ b/drivers/block/cpqarray.c | |||
@@ -903,7 +903,7 @@ static void do_ida_request(struct request_queue *q) | |||
903 | goto startio; | 903 | goto startio; |
904 | 904 | ||
905 | queue_next: | 905 | queue_next: |
906 | creq = elv_next_request(q); | 906 | creq = blk_peek_request(q); |
907 | if (!creq) | 907 | if (!creq) |
908 | goto startio; | 908 | goto startio; |
909 | 909 | ||
@@ -912,7 +912,7 @@ queue_next: | |||
912 | if ((c = cmd_alloc(h,1)) == NULL) | 912 | if ((c = cmd_alloc(h,1)) == NULL) |
913 | goto startio; | 913 | goto startio; |
914 | 914 | ||
915 | blkdev_dequeue_request(creq); | 915 | blk_start_request(creq); |
916 | 916 | ||
917 | c->ctlr = h->ctlr; | 917 | c->ctlr = h->ctlr; |
918 | c->hdr.unit = (drv_info_t *)(creq->rq_disk->private_data) - h->drv; | 918 | c->hdr.unit = (drv_info_t *)(creq->rq_disk->private_data) - h->drv; |
diff --git a/drivers/block/floppy.c b/drivers/block/floppy.c index e2c70d2085ae..90877fee0ee0 100644 --- a/drivers/block/floppy.c +++ b/drivers/block/floppy.c | |||
@@ -931,7 +931,7 @@ static inline void unlock_fdc(void) | |||
931 | del_timer(&fd_timeout); | 931 | del_timer(&fd_timeout); |
932 | cont = NULL; | 932 | cont = NULL; |
933 | clear_bit(0, &fdc_busy); | 933 | clear_bit(0, &fdc_busy); |
934 | if (current_req || elv_next_request(floppy_queue)) | 934 | if (current_req || blk_peek_request(floppy_queue)) |
935 | do_fd_request(floppy_queue); | 935 | do_fd_request(floppy_queue); |
936 | spin_unlock_irqrestore(&floppy_lock, flags); | 936 | spin_unlock_irqrestore(&floppy_lock, flags); |
937 | wake_up(&fdc_wait); | 937 | wake_up(&fdc_wait); |
@@ -2912,9 +2912,7 @@ static void redo_fd_request(void) | |||
2912 | struct request *req; | 2912 | struct request *req; |
2913 | 2913 | ||
2914 | spin_lock_irq(floppy_queue->queue_lock); | 2914 | spin_lock_irq(floppy_queue->queue_lock); |
2915 | req = elv_next_request(floppy_queue); | 2915 | req = blk_fetch_request(floppy_queue); |
2916 | if (req) | ||
2917 | blkdev_dequeue_request(req); | ||
2918 | spin_unlock_irq(floppy_queue->queue_lock); | 2916 | spin_unlock_irq(floppy_queue->queue_lock); |
2919 | if (!req) { | 2917 | if (!req) { |
2920 | do_floppy = NULL; | 2918 | do_floppy = NULL; |
diff --git a/drivers/block/hd.c b/drivers/block/hd.c index 288ab63c1029..961de56d00a9 100644 --- a/drivers/block/hd.c +++ b/drivers/block/hd.c | |||
@@ -592,12 +592,11 @@ repeat: | |||
592 | del_timer(&device_timer); | 592 | del_timer(&device_timer); |
593 | 593 | ||
594 | if (!hd_req) { | 594 | if (!hd_req) { |
595 | hd_req = elv_next_request(hd_queue); | 595 | hd_req = blk_fetch_request(hd_queue); |
596 | if (!hd_req) { | 596 | if (!hd_req) { |
597 | do_hd = NULL; | 597 | do_hd = NULL; |
598 | return; | 598 | return; |
599 | } | 599 | } |
600 | blkdev_dequeue_request(hd_req); | ||
601 | } | 600 | } |
602 | req = hd_req; | 601 | req = hd_req; |
603 | 602 | ||
diff --git a/drivers/block/mg_disk.c b/drivers/block/mg_disk.c index 1ca5d1423fa3..c0cd0a03f698 100644 --- a/drivers/block/mg_disk.c +++ b/drivers/block/mg_disk.c | |||
@@ -671,10 +671,8 @@ static void mg_request_poll(struct request_queue *q) | |||
671 | 671 | ||
672 | while (1) { | 672 | while (1) { |
673 | if (!host->req) { | 673 | if (!host->req) { |
674 | host->req = elv_next_request(q); | 674 | host->req = blk_fetch_request(q); |
675 | if (host->req) | 675 | if (!host->req) |
676 | blkdev_dequeue_request(host->req); | ||
677 | else | ||
678 | break; | 676 | break; |
679 | } | 677 | } |
680 | 678 | ||
@@ -744,10 +742,8 @@ static void mg_request(struct request_queue *q) | |||
744 | 742 | ||
745 | while (1) { | 743 | while (1) { |
746 | if (!host->req) { | 744 | if (!host->req) { |
747 | host->req = elv_next_request(q); | 745 | host->req = blk_fetch_request(q); |
748 | if (host->req) | 746 | if (!host->req) |
749 | blkdev_dequeue_request(host->req); | ||
750 | else | ||
751 | break; | 747 | break; |
752 | } | 748 | } |
753 | req = host->req; | 749 | req = host->req; |
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c index fad167de23b4..5d23ffad7c77 100644 --- a/drivers/block/nbd.c +++ b/drivers/block/nbd.c | |||
@@ -533,11 +533,9 @@ static void do_nbd_request(struct request_queue *q) | |||
533 | { | 533 | { |
534 | struct request *req; | 534 | struct request *req; |
535 | 535 | ||
536 | while ((req = elv_next_request(q)) != NULL) { | 536 | while ((req = blk_fetch_request(q)) != NULL) { |
537 | struct nbd_device *lo; | 537 | struct nbd_device *lo; |
538 | 538 | ||
539 | blkdev_dequeue_request(req); | ||
540 | |||
541 | spin_unlock_irq(q->queue_lock); | 539 | spin_unlock_irq(q->queue_lock); |
542 | 540 | ||
543 | dprintk(DBG_BLKDEV, "%s: request %p: dequeued (flags=%x)\n", | 541 | dprintk(DBG_BLKDEV, "%s: request %p: dequeued (flags=%x)\n", |
diff --git a/drivers/block/paride/pcd.c b/drivers/block/paride/pcd.c index 425f81586a31..911dfd98d813 100644 --- a/drivers/block/paride/pcd.c +++ b/drivers/block/paride/pcd.c | |||
@@ -720,10 +720,9 @@ static void do_pcd_request(struct request_queue * q) | |||
720 | return; | 720 | return; |
721 | while (1) { | 721 | while (1) { |
722 | if (!pcd_req) { | 722 | if (!pcd_req) { |
723 | pcd_req = elv_next_request(q); | 723 | pcd_req = blk_fetch_request(q); |
724 | if (!pcd_req) | 724 | if (!pcd_req) |
725 | return; | 725 | return; |
726 | blkdev_dequeue_request(pcd_req); | ||
727 | } | 726 | } |
728 | 727 | ||
729 | if (rq_data_dir(pcd_req) == READ) { | 728 | if (rq_data_dir(pcd_req) == READ) { |
diff --git a/drivers/block/paride/pd.c b/drivers/block/paride/pd.c index d2ca3f552061..bf5955b3d873 100644 --- a/drivers/block/paride/pd.c +++ b/drivers/block/paride/pd.c | |||
@@ -412,11 +412,9 @@ static void run_fsm(void) | |||
412 | spin_lock_irqsave(&pd_lock, saved_flags); | 412 | spin_lock_irqsave(&pd_lock, saved_flags); |
413 | if (!__blk_end_request_cur(pd_req, | 413 | if (!__blk_end_request_cur(pd_req, |
414 | res == Ok ? 0 : -EIO)) { | 414 | res == Ok ? 0 : -EIO)) { |
415 | pd_req = elv_next_request(pd_queue); | 415 | pd_req = blk_fetch_request(pd_queue); |
416 | if (!pd_req) | 416 | if (!pd_req) |
417 | stop = 1; | 417 | stop = 1; |
418 | else | ||
419 | blkdev_dequeue_request(pd_req); | ||
420 | } | 418 | } |
421 | spin_unlock_irqrestore(&pd_lock, saved_flags); | 419 | spin_unlock_irqrestore(&pd_lock, saved_flags); |
422 | if (stop) | 420 | if (stop) |
@@ -706,10 +704,9 @@ static void do_pd_request(struct request_queue * q) | |||
706 | { | 704 | { |
707 | if (pd_req) | 705 | if (pd_req) |
708 | return; | 706 | return; |
709 | pd_req = elv_next_request(q); | 707 | pd_req = blk_fetch_request(q); |
710 | if (!pd_req) | 708 | if (!pd_req) |
711 | return; | 709 | return; |
712 | blkdev_dequeue_request(pd_req); | ||
713 | 710 | ||
714 | schedule_fsm(); | 711 | schedule_fsm(); |
715 | } | 712 | } |
diff --git a/drivers/block/paride/pf.c b/drivers/block/paride/pf.c index d6f7bd84ed39..68a90834e993 100644 --- a/drivers/block/paride/pf.c +++ b/drivers/block/paride/pf.c | |||
@@ -762,10 +762,9 @@ static void do_pf_request(struct request_queue * q) | |||
762 | return; | 762 | return; |
763 | repeat: | 763 | repeat: |
764 | if (!pf_req) { | 764 | if (!pf_req) { |
765 | pf_req = elv_next_request(q); | 765 | pf_req = blk_fetch_request(q); |
766 | if (!pf_req) | 766 | if (!pf_req) |
767 | return; | 767 | return; |
768 | blkdev_dequeue_request(pf_req); | ||
769 | } | 768 | } |
770 | 769 | ||
771 | pf_current = pf_req->rq_disk->private_data; | 770 | pf_current = pf_req->rq_disk->private_data; |
diff --git a/drivers/block/ps3disk.c b/drivers/block/ps3disk.c index f4d8db944e7d..338cee4cc0ba 100644 --- a/drivers/block/ps3disk.c +++ b/drivers/block/ps3disk.c | |||
@@ -194,9 +194,7 @@ static void ps3disk_do_request(struct ps3_storage_device *dev, | |||
194 | 194 | ||
195 | dev_dbg(&dev->sbd.core, "%s:%u\n", __func__, __LINE__); | 195 | dev_dbg(&dev->sbd.core, "%s:%u\n", __func__, __LINE__); |
196 | 196 | ||
197 | while ((req = elv_next_request(q))) { | 197 | while ((req = blk_fetch_request(q))) { |
198 | blkdev_dequeue_request(req); | ||
199 | |||
200 | if (blk_fs_request(req)) { | 198 | if (blk_fs_request(req)) { |
201 | if (ps3disk_submit_request_sg(dev, req)) | 199 | if (ps3disk_submit_request_sg(dev, req)) |
202 | break; | 200 | break; |
diff --git a/drivers/block/sunvdc.c b/drivers/block/sunvdc.c index 9f351bfa15ea..cbfd9c0aef03 100644 --- a/drivers/block/sunvdc.c +++ b/drivers/block/sunvdc.c | |||
@@ -441,12 +441,11 @@ out: | |||
441 | static void do_vdc_request(struct request_queue *q) | 441 | static void do_vdc_request(struct request_queue *q) |
442 | { | 442 | { |
443 | while (1) { | 443 | while (1) { |
444 | struct request *req = elv_next_request(q); | 444 | struct request *req = blk_fetch_request(q); |
445 | 445 | ||
446 | if (!req) | 446 | if (!req) |
447 | break; | 447 | break; |
448 | 448 | ||
449 | blkdev_dequeue_request(req); | ||
450 | if (__send_request(req) < 0) | 449 | if (__send_request(req) < 0) |
451 | __blk_end_request_all(req, -EIO); | 450 | __blk_end_request_all(req, -EIO); |
452 | } | 451 | } |
diff --git a/drivers/block/swim.c b/drivers/block/swim.c index dedd4893f5ea..cf7877fb8a7d 100644 --- a/drivers/block/swim.c +++ b/drivers/block/swim.c | |||
@@ -528,10 +528,7 @@ static void redo_fd_request(struct request_queue *q) | |||
528 | struct request *req; | 528 | struct request *req; |
529 | struct floppy_state *fs; | 529 | struct floppy_state *fs; |
530 | 530 | ||
531 | req = elv_next_request(q); | 531 | req = blk_fetch_request(q); |
532 | if (req) | ||
533 | blkdev_dequeue_request(req); | ||
534 | |||
535 | while (req) { | 532 | while (req) { |
536 | int err = -EIO; | 533 | int err = -EIO; |
537 | 534 | ||
@@ -554,11 +551,8 @@ static void redo_fd_request(struct request_queue *q) | |||
554 | break; | 551 | break; |
555 | } | 552 | } |
556 | done: | 553 | done: |
557 | if (!__blk_end_request_cur(req, err)) { | 554 | if (!__blk_end_request_cur(req, err)) |
558 | req = elv_next_request(q); | 555 | req = blk_fetch_request(q); |
559 | if (req) | ||
560 | blkdev_dequeue_request(req); | ||
561 | } | ||
562 | } | 556 | } |
563 | } | 557 | } |
564 | 558 | ||
diff --git a/drivers/block/swim3.c b/drivers/block/swim3.c index f48c6dd47e04..80df93e3cdd0 100644 --- a/drivers/block/swim3.c +++ b/drivers/block/swim3.c | |||
@@ -326,10 +326,9 @@ static void start_request(struct floppy_state *fs) | |||
326 | } | 326 | } |
327 | while (fs->state == idle) { | 327 | while (fs->state == idle) { |
328 | if (!fd_req) { | 328 | if (!fd_req) { |
329 | fd_req = elv_next_request(swim3_queue); | 329 | fd_req = blk_fetch_request(swim3_queue); |
330 | if (!fd_req) | 330 | if (!fd_req) |
331 | break; | 331 | break; |
332 | blkdev_dequeue_request(fd_req); | ||
333 | } | 332 | } |
334 | req = fd_req; | 333 | req = fd_req; |
335 | #if 0 | 334 | #if 0 |
diff --git a/drivers/block/sx8.c b/drivers/block/sx8.c index 087c94c8b2da..da403b6a7f43 100644 --- a/drivers/block/sx8.c +++ b/drivers/block/sx8.c | |||
@@ -810,12 +810,10 @@ static void carm_oob_rq_fn(struct request_queue *q) | |||
810 | 810 | ||
811 | while (1) { | 811 | while (1) { |
812 | DPRINTK("get req\n"); | 812 | DPRINTK("get req\n"); |
813 | rq = elv_next_request(q); | 813 | rq = blk_fetch_request(q); |
814 | if (!rq) | 814 | if (!rq) |
815 | break; | 815 | break; |
816 | 816 | ||
817 | blkdev_dequeue_request(rq); | ||
818 | |||
819 | crq = rq->special; | 817 | crq = rq->special; |
820 | assert(crq != NULL); | 818 | assert(crq != NULL); |
821 | assert(crq->rq == rq); | 819 | assert(crq->rq == rq); |
@@ -846,7 +844,7 @@ static void carm_rq_fn(struct request_queue *q) | |||
846 | 844 | ||
847 | queue_one_request: | 845 | queue_one_request: |
848 | VPRINTK("get req\n"); | 846 | VPRINTK("get req\n"); |
849 | rq = elv_next_request(q); | 847 | rq = blk_peek_request(q); |
850 | if (!rq) | 848 | if (!rq) |
851 | return; | 849 | return; |
852 | 850 | ||
@@ -857,7 +855,7 @@ queue_one_request: | |||
857 | } | 855 | } |
858 | crq->rq = rq; | 856 | crq->rq = rq; |
859 | 857 | ||
860 | blkdev_dequeue_request(rq); | 858 | blk_start_request(rq); |
861 | 859 | ||
862 | if (rq_data_dir(rq) == WRITE) { | 860 | if (rq_data_dir(rq) == WRITE) { |
863 | writing = 1; | 861 | writing = 1; |
diff --git a/drivers/block/ub.c b/drivers/block/ub.c index 40d03cf63f2e..178f459a50ed 100644 --- a/drivers/block/ub.c +++ b/drivers/block/ub.c | |||
@@ -627,7 +627,7 @@ static void ub_request_fn(struct request_queue *q) | |||
627 | struct ub_lun *lun = q->queuedata; | 627 | struct ub_lun *lun = q->queuedata; |
628 | struct request *rq; | 628 | struct request *rq; |
629 | 629 | ||
630 | while ((rq = elv_next_request(q)) != NULL) { | 630 | while ((rq = blk_peek_request(q)) != NULL) { |
631 | if (ub_request_fn_1(lun, rq) != 0) { | 631 | if (ub_request_fn_1(lun, rq) != 0) { |
632 | blk_stop_queue(q); | 632 | blk_stop_queue(q); |
633 | break; | 633 | break; |
@@ -643,13 +643,13 @@ static int ub_request_fn_1(struct ub_lun *lun, struct request *rq) | |||
643 | int n_elem; | 643 | int n_elem; |
644 | 644 | ||
645 | if (atomic_read(&sc->poison)) { | 645 | if (atomic_read(&sc->poison)) { |
646 | blkdev_dequeue_request(rq); | 646 | blk_start_request(rq); |
647 | ub_end_rq(rq, DID_NO_CONNECT << 16, blk_rq_bytes(rq)); | 647 | ub_end_rq(rq, DID_NO_CONNECT << 16, blk_rq_bytes(rq)); |
648 | return 0; | 648 | return 0; |
649 | } | 649 | } |
650 | 650 | ||
651 | if (lun->changed && !blk_pc_request(rq)) { | 651 | if (lun->changed && !blk_pc_request(rq)) { |
652 | blkdev_dequeue_request(rq); | 652 | blk_start_request(rq); |
653 | ub_end_rq(rq, SAM_STAT_CHECK_CONDITION, blk_rq_bytes(rq)); | 653 | ub_end_rq(rq, SAM_STAT_CHECK_CONDITION, blk_rq_bytes(rq)); |
654 | return 0; | 654 | return 0; |
655 | } | 655 | } |
@@ -660,7 +660,7 @@ static int ub_request_fn_1(struct ub_lun *lun, struct request *rq) | |||
660 | return -1; | 660 | return -1; |
661 | memset(cmd, 0, sizeof(struct ub_scsi_cmd)); | 661 | memset(cmd, 0, sizeof(struct ub_scsi_cmd)); |
662 | 662 | ||
663 | blkdev_dequeue_request(rq); | 663 | blk_start_request(rq); |
664 | 664 | ||
665 | urq = &lun->urq; | 665 | urq = &lun->urq; |
666 | memset(urq, 0, sizeof(struct ub_request)); | 666 | memset(urq, 0, sizeof(struct ub_request)); |
diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c index 2086cb12d3ec..390d69bb7c48 100644 --- a/drivers/block/viodasd.c +++ b/drivers/block/viodasd.c | |||
@@ -361,11 +361,9 @@ static void do_viodasd_request(struct request_queue *q) | |||
361 | * back later. | 361 | * back later. |
362 | */ | 362 | */ |
363 | while (num_req_outstanding < VIOMAXREQ) { | 363 | while (num_req_outstanding < VIOMAXREQ) { |
364 | req = elv_next_request(q); | 364 | req = blk_fetch_request(q); |
365 | if (req == NULL) | 365 | if (req == NULL) |
366 | return; | 366 | return; |
367 | /* dequeue the current request from the queue */ | ||
368 | blkdev_dequeue_request(req); | ||
369 | /* check that request contains a valid command */ | 367 | /* check that request contains a valid command */ |
370 | if (!blk_fs_request(req)) { | 368 | if (!blk_fs_request(req)) { |
371 | viodasd_end_request(req, -EIO, blk_rq_sectors(req)); | 369 | viodasd_end_request(req, -EIO, blk_rq_sectors(req)); |
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c index 1980ab456356..29a9daf48621 100644 --- a/drivers/block/virtio_blk.c +++ b/drivers/block/virtio_blk.c | |||
@@ -128,7 +128,7 @@ static void do_virtblk_request(struct request_queue *q) | |||
128 | struct request *req; | 128 | struct request *req; |
129 | unsigned int issued = 0; | 129 | unsigned int issued = 0; |
130 | 130 | ||
131 | while ((req = elv_next_request(q)) != NULL) { | 131 | while ((req = blk_peek_request(q)) != NULL) { |
132 | vblk = req->rq_disk->private_data; | 132 | vblk = req->rq_disk->private_data; |
133 | BUG_ON(req->nr_phys_segments + 2 > vblk->sg_elems); | 133 | BUG_ON(req->nr_phys_segments + 2 > vblk->sg_elems); |
134 | 134 | ||
@@ -138,7 +138,7 @@ static void do_virtblk_request(struct request_queue *q) | |||
138 | blk_stop_queue(q); | 138 | blk_stop_queue(q); |
139 | break; | 139 | break; |
140 | } | 140 | } |
141 | blkdev_dequeue_request(req); | 141 | blk_start_request(req); |
142 | issued++; | 142 | issued++; |
143 | } | 143 | } |
144 | 144 | ||
diff --git a/drivers/block/xd.c b/drivers/block/xd.c index d4c4352354b5..ce2429219925 100644 --- a/drivers/block/xd.c +++ b/drivers/block/xd.c | |||
@@ -305,10 +305,7 @@ static void do_xd_request (struct request_queue * q) | |||
305 | if (xdc_busy) | 305 | if (xdc_busy) |
306 | return; | 306 | return; |
307 | 307 | ||
308 | req = elv_next_request(q); | 308 | req = blk_fetch_request(q); |
309 | if (req) | ||
310 | blkdev_dequeue_request(req); | ||
311 | |||
312 | while (req) { | 309 | while (req) { |
313 | unsigned block = blk_rq_pos(req); | 310 | unsigned block = blk_rq_pos(req); |
314 | unsigned count = blk_rq_cur_sectors(req); | 311 | unsigned count = blk_rq_cur_sectors(req); |
@@ -325,11 +322,8 @@ static void do_xd_request (struct request_queue * q) | |||
325 | block, count); | 322 | block, count); |
326 | done: | 323 | done: |
327 | /* wrap up, 0 = success, -errno = fail */ | 324 | /* wrap up, 0 = success, -errno = fail */ |
328 | if (!__blk_end_request_cur(req, res)) { | 325 | if (!__blk_end_request_cur(req, res)) |
329 | req = elv_next_request(q); | 326 | req = blk_fetch_request(q); |
330 | if (req) | ||
331 | blkdev_dequeue_request(req); | ||
332 | } | ||
333 | } | 327 | } |
334 | } | 328 | } |
335 | 329 | ||
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c index 66f834571b88..6d4ac76c2806 100644 --- a/drivers/block/xen-blkfront.c +++ b/drivers/block/xen-blkfront.c | |||
@@ -299,13 +299,13 @@ static void do_blkif_request(struct request_queue *rq) | |||
299 | 299 | ||
300 | queued = 0; | 300 | queued = 0; |
301 | 301 | ||
302 | while ((req = elv_next_request(rq)) != NULL) { | 302 | while ((req = blk_peek_request(rq)) != NULL) { |
303 | info = req->rq_disk->private_data; | 303 | info = req->rq_disk->private_data; |
304 | 304 | ||
305 | if (RING_FULL(&info->ring)) | 305 | if (RING_FULL(&info->ring)) |
306 | goto wait; | 306 | goto wait; |
307 | 307 | ||
308 | blkdev_dequeue_request(req); | 308 | blk_start_request(req); |
309 | 309 | ||
310 | if (!blk_fs_request(req)) { | 310 | if (!blk_fs_request(req)) { |
311 | __blk_end_request_all(req, -EIO); | 311 | __blk_end_request_all(req, -EIO); |
diff --git a/drivers/block/xsysace.c b/drivers/block/xsysace.c index edf137b6c379..3a4397edab71 100644 --- a/drivers/block/xsysace.c +++ b/drivers/block/xsysace.c | |||
@@ -463,10 +463,10 @@ struct request *ace_get_next_request(struct request_queue * q) | |||
463 | { | 463 | { |
464 | struct request *req; | 464 | struct request *req; |
465 | 465 | ||
466 | while ((req = elv_next_request(q)) != NULL) { | 466 | while ((req = blk_peek_request(q)) != NULL) { |
467 | if (blk_fs_request(req)) | 467 | if (blk_fs_request(req)) |
468 | break; | 468 | break; |
469 | blkdev_dequeue_request(req); | 469 | blk_start_request(req); |
470 | __blk_end_request_all(req, -EIO); | 470 | __blk_end_request_all(req, -EIO); |
471 | } | 471 | } |
472 | return req; | 472 | return req; |
@@ -498,10 +498,8 @@ static void ace_fsm_dostate(struct ace_device *ace) | |||
498 | __blk_end_request_all(ace->req, -EIO); | 498 | __blk_end_request_all(ace->req, -EIO); |
499 | ace->req = NULL; | 499 | ace->req = NULL; |
500 | } | 500 | } |
501 | while ((req = elv_next_request(ace->queue)) != NULL) { | 501 | while ((req = blk_fetch_request(ace->queue)) != NULL) |
502 | blkdev_dequeue_request(req); | ||
503 | __blk_end_request_all(req, -EIO); | 502 | __blk_end_request_all(req, -EIO); |
504 | } | ||
505 | 503 | ||
506 | /* Drop back to IDLE state and notify waiters */ | 504 | /* Drop back to IDLE state and notify waiters */ |
507 | ace->fsm_state = ACE_FSM_STATE_IDLE; | 505 | ace->fsm_state = ACE_FSM_STATE_IDLE; |
@@ -649,7 +647,7 @@ static void ace_fsm_dostate(struct ace_device *ace) | |||
649 | ace->fsm_state = ACE_FSM_STATE_IDLE; | 647 | ace->fsm_state = ACE_FSM_STATE_IDLE; |
650 | break; | 648 | break; |
651 | } | 649 | } |
652 | blkdev_dequeue_request(req); | 650 | blk_start_request(req); |
653 | 651 | ||
654 | /* Okay, it's a data request, set it up for transfer */ | 652 | /* Okay, it's a data request, set it up for transfer */ |
655 | dev_dbg(ace->dev, | 653 | dev_dbg(ace->dev, |
diff --git a/drivers/block/z2ram.c b/drivers/block/z2ram.c index c909c1a3f650..4575171e5beb 100644 --- a/drivers/block/z2ram.c +++ b/drivers/block/z2ram.c | |||
@@ -71,10 +71,7 @@ static void do_z2_request(struct request_queue *q) | |||
71 | { | 71 | { |
72 | struct request *req; | 72 | struct request *req; |
73 | 73 | ||
74 | req = elv_next_request(q); | 74 | req = blk_fetch_request(q); |
75 | if (req) | ||
76 | blkdev_dequeue_request(req); | ||
77 | |||
78 | while (req) { | 75 | while (req) { |
79 | unsigned long start = blk_rq_pos(req) << 9; | 76 | unsigned long start = blk_rq_pos(req) << 9; |
80 | unsigned long len = blk_rq_cur_bytes(req); | 77 | unsigned long len = blk_rq_cur_bytes(req); |
@@ -100,11 +97,8 @@ static void do_z2_request(struct request_queue *q) | |||
100 | len -= size; | 97 | len -= size; |
101 | } | 98 | } |
102 | done: | 99 | done: |
103 | if (!__blk_end_request_cur(req, err)) { | 100 | if (!__blk_end_request_cur(req, err)) |
104 | req = elv_next_request(q); | 101 | req = blk_fetch_request(q); |
105 | if (req) | ||
106 | blkdev_dequeue_request(req); | ||
107 | } | ||
108 | } | 102 | } |
109 | } | 103 | } |
110 | 104 | ||
diff --git a/drivers/cdrom/gdrom.c b/drivers/cdrom/gdrom.c index 3cc02bfe828d..1e366ad8f680 100644 --- a/drivers/cdrom/gdrom.c +++ b/drivers/cdrom/gdrom.c | |||
@@ -642,9 +642,7 @@ static void gdrom_request(struct request_queue *rq) | |||
642 | { | 642 | { |
643 | struct request *req; | 643 | struct request *req; |
644 | 644 | ||
645 | while ((req = elv_next_request(rq)) != NULL) { | 645 | while ((req = blk_fetch_request(rq)) != NULL) { |
646 | blkdev_dequeue_request(req); | ||
647 | |||
648 | if (!blk_fs_request(req)) { | 646 | if (!blk_fs_request(req)) { |
649 | printk(KERN_DEBUG "GDROM: Non-fs request ignored\n"); | 647 | printk(KERN_DEBUG "GDROM: Non-fs request ignored\n"); |
650 | __blk_end_request_all(req, -EIO); | 648 | __blk_end_request_all(req, -EIO); |
diff --git a/drivers/cdrom/viocd.c b/drivers/cdrom/viocd.c index bbe9f0867347..ca741c21e4aa 100644 --- a/drivers/cdrom/viocd.c +++ b/drivers/cdrom/viocd.c | |||
@@ -297,9 +297,7 @@ static void do_viocd_request(struct request_queue *q) | |||
297 | { | 297 | { |
298 | struct request *req; | 298 | struct request *req; |
299 | 299 | ||
300 | while ((rwreq == 0) && ((req = elv_next_request(q)) != NULL)) { | 300 | while ((rwreq == 0) && ((req = blk_fetch_request(q)) != NULL)) { |
301 | blkdev_dequeue_request(req); | ||
302 | |||
303 | if (!blk_fs_request(req)) | 301 | if (!blk_fs_request(req)) |
304 | __blk_end_request_all(req, -EIO); | 302 | __blk_end_request_all(req, -EIO); |
305 | else if (send_request(req) < 0) { | 303 | else if (send_request(req) < 0) { |
diff --git a/drivers/ide/ide-atapi.c b/drivers/ide/ide-atapi.c index 2874c3d703a9..8a894fa37b53 100644 --- a/drivers/ide/ide-atapi.c +++ b/drivers/ide/ide-atapi.c | |||
@@ -269,7 +269,7 @@ void ide_retry_pc(ide_drive_t *drive) | |||
269 | blk_requeue_request(failed_rq->q, failed_rq); | 269 | blk_requeue_request(failed_rq->q, failed_rq); |
270 | drive->hwif->rq = NULL; | 270 | drive->hwif->rq = NULL; |
271 | if (ide_queue_sense_rq(drive, pc)) { | 271 | if (ide_queue_sense_rq(drive, pc)) { |
272 | blkdev_dequeue_request(failed_rq); | 272 | blk_start_request(failed_rq); |
273 | ide_complete_rq(drive, -EIO, blk_rq_bytes(failed_rq)); | 273 | ide_complete_rq(drive, -EIO, blk_rq_bytes(failed_rq)); |
274 | } | 274 | } |
275 | } | 275 | } |
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index abda7337b3f4..e4e3a0e3201e 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
@@ -519,11 +519,8 @@ repeat: | |||
519 | * we know that the queue isn't empty, but this can happen | 519 | * we know that the queue isn't empty, but this can happen |
520 | * if the q->prep_rq_fn() decides to kill a request | 520 | * if the q->prep_rq_fn() decides to kill a request |
521 | */ | 521 | */ |
522 | if (!rq) { | 522 | if (!rq) |
523 | rq = elv_next_request(drive->queue); | 523 | rq = blk_fetch_request(drive->queue); |
524 | if (rq) | ||
525 | blkdev_dequeue_request(rq); | ||
526 | } | ||
527 | 524 | ||
528 | spin_unlock_irq(q->queue_lock); | 525 | spin_unlock_irq(q->queue_lock); |
529 | spin_lock_irq(&hwif->lock); | 526 | spin_lock_irq(&hwif->lock); |
@@ -536,7 +533,7 @@ repeat: | |||
536 | /* | 533 | /* |
537 | * Sanity: don't accept a request that isn't a PM request | 534 | * Sanity: don't accept a request that isn't a PM request |
538 | * if we are currently power managed. This is very important as | 535 | * if we are currently power managed. This is very important as |
539 | * blk_stop_queue() doesn't prevent the elv_next_request() | 536 | * blk_stop_queue() doesn't prevent the blk_fetch_request() |
540 | * above to return us whatever is in the queue. Since we call | 537 | * above to return us whatever is in the queue. Since we call |
541 | * ide_do_request() ourselves, we end up taking requests while | 538 | * ide_do_request() ourselves, we end up taking requests while |
542 | * the queue is blocked... | 539 | * the queue is blocked... |
diff --git a/drivers/memstick/core/mspro_block.c b/drivers/memstick/core/mspro_block.c index 58f5be8cd69e..c0bebc6a2f2c 100644 --- a/drivers/memstick/core/mspro_block.c +++ b/drivers/memstick/core/mspro_block.c | |||
@@ -704,13 +704,12 @@ try_again: | |||
704 | return 0; | 704 | return 0; |
705 | } | 705 | } |
706 | 706 | ||
707 | dev_dbg(&card->dev, "elv_next\n"); | 707 | dev_dbg(&card->dev, "blk_fetch\n"); |
708 | msb->block_req = elv_next_request(msb->queue); | 708 | msb->block_req = blk_fetch_request(msb->queue); |
709 | if (!msb->block_req) { | 709 | if (!msb->block_req) { |
710 | dev_dbg(&card->dev, "issue end\n"); | 710 | dev_dbg(&card->dev, "issue end\n"); |
711 | return -EAGAIN; | 711 | return -EAGAIN; |
712 | } | 712 | } |
713 | blkdev_dequeue_request(msb->block_req); | ||
714 | 713 | ||
715 | dev_dbg(&card->dev, "trying again\n"); | 714 | dev_dbg(&card->dev, "trying again\n"); |
716 | chunk = 1; | 715 | chunk = 1; |
@@ -825,10 +824,8 @@ static void mspro_block_submit_req(struct request_queue *q) | |||
825 | return; | 824 | return; |
826 | 825 | ||
827 | if (msb->eject) { | 826 | if (msb->eject) { |
828 | while ((req = elv_next_request(q)) != NULL) { | 827 | while ((req = blk_fetch_request(q)) != NULL) |
829 | blkdev_dequeue_request(req); | ||
830 | __blk_end_request_all(req, -ENODEV); | 828 | __blk_end_request_all(req, -ENODEV); |
831 | } | ||
832 | 829 | ||
833 | return; | 830 | return; |
834 | } | 831 | } |
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c index 8b5cbfc3ba97..6573ef4408f1 100644 --- a/drivers/message/i2o/i2o_block.c +++ b/drivers/message/i2o/i2o_block.c | |||
@@ -877,7 +877,7 @@ static void i2o_block_request_fn(struct request_queue *q) | |||
877 | struct request *req; | 877 | struct request *req; |
878 | 878 | ||
879 | while (!blk_queue_plugged(q)) { | 879 | while (!blk_queue_plugged(q)) { |
880 | req = elv_next_request(q); | 880 | req = blk_peek_request(q); |
881 | if (!req) | 881 | if (!req) |
882 | break; | 882 | break; |
883 | 883 | ||
@@ -890,7 +890,7 @@ static void i2o_block_request_fn(struct request_queue *q) | |||
890 | 890 | ||
891 | if (queue_depth < I2O_BLOCK_MAX_OPEN_REQUESTS) { | 891 | if (queue_depth < I2O_BLOCK_MAX_OPEN_REQUESTS) { |
892 | if (!i2o_block_transfer(req)) { | 892 | if (!i2o_block_transfer(req)) { |
893 | blkdev_dequeue_request(req); | 893 | blk_start_request(req); |
894 | continue; | 894 | continue; |
895 | } else | 895 | } else |
896 | osm_info("transfer error\n"); | 896 | osm_info("transfer error\n"); |
@@ -917,7 +917,7 @@ static void i2o_block_request_fn(struct request_queue *q) | |||
917 | break; | 917 | break; |
918 | } | 918 | } |
919 | } else { | 919 | } else { |
920 | blkdev_dequeue_request(req); | 920 | blk_start_request(req); |
921 | __blk_end_request_all(req, -EIO); | 921 | __blk_end_request_all(req, -EIO); |
922 | } | 922 | } |
923 | } | 923 | } |
diff --git a/drivers/mmc/card/queue.c b/drivers/mmc/card/queue.c index 4b70f1e28347..49e582356c65 100644 --- a/drivers/mmc/card/queue.c +++ b/drivers/mmc/card/queue.c | |||
@@ -54,11 +54,8 @@ static int mmc_queue_thread(void *d) | |||
54 | 54 | ||
55 | spin_lock_irq(q->queue_lock); | 55 | spin_lock_irq(q->queue_lock); |
56 | set_current_state(TASK_INTERRUPTIBLE); | 56 | set_current_state(TASK_INTERRUPTIBLE); |
57 | if (!blk_queue_plugged(q)) { | 57 | if (!blk_queue_plugged(q)) |
58 | req = elv_next_request(q); | 58 | req = blk_fetch_request(q); |
59 | if (req) | ||
60 | blkdev_dequeue_request(req); | ||
61 | } | ||
62 | mq->req = req; | 59 | mq->req = req; |
63 | spin_unlock_irq(q->queue_lock); | 60 | spin_unlock_irq(q->queue_lock); |
64 | 61 | ||
@@ -94,10 +91,8 @@ static void mmc_request(struct request_queue *q) | |||
94 | 91 | ||
95 | if (!mq) { | 92 | if (!mq) { |
96 | printk(KERN_ERR "MMC: killing requests for dead queue\n"); | 93 | printk(KERN_ERR "MMC: killing requests for dead queue\n"); |
97 | while ((req = elv_next_request(q)) != NULL) { | 94 | while ((req = blk_fetch_request(q)) != NULL) |
98 | blkdev_dequeue_request(req); | ||
99 | __blk_end_request_all(req, -EIO); | 95 | __blk_end_request_all(req, -EIO); |
100 | } | ||
101 | return; | 96 | return; |
102 | } | 97 | } |
103 | 98 | ||
diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c index 3e10442615d1..502622f628bc 100644 --- a/drivers/mtd/mtd_blkdevs.c +++ b/drivers/mtd/mtd_blkdevs.c | |||
@@ -100,12 +100,7 @@ static int mtd_blktrans_thread(void *arg) | |||
100 | struct mtd_blktrans_dev *dev; | 100 | struct mtd_blktrans_dev *dev; |
101 | int res; | 101 | int res; |
102 | 102 | ||
103 | if (!req) { | 103 | if (!req && !(req = blk_fetch_request(rq))) { |
104 | req = elv_next_request(rq); | ||
105 | if (req) | ||
106 | blkdev_dequeue_request(req); | ||
107 | } | ||
108 | if (!req) { | ||
109 | set_current_state(TASK_INTERRUPTIBLE); | 104 | set_current_state(TASK_INTERRUPTIBLE); |
110 | spin_unlock_irq(rq->queue_lock); | 105 | spin_unlock_irq(rq->queue_lock); |
111 | schedule(); | 106 | schedule(); |
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c index 7df03c7aea0d..e64f62d5e0fc 100644 --- a/drivers/s390/block/dasd.c +++ b/drivers/s390/block/dasd.c | |||
@@ -1656,17 +1656,13 @@ static void __dasd_process_request_queue(struct dasd_block *block) | |||
1656 | if (basedev->state < DASD_STATE_READY) | 1656 | if (basedev->state < DASD_STATE_READY) |
1657 | return; | 1657 | return; |
1658 | /* Now we try to fetch requests from the request queue */ | 1658 | /* Now we try to fetch requests from the request queue */ |
1659 | while (!blk_queue_plugged(queue) && | 1659 | while (!blk_queue_plugged(queue) && (req = blk_peek_request(queue))) { |
1660 | elv_next_request(queue)) { | ||
1661 | |||
1662 | req = elv_next_request(queue); | ||
1663 | |||
1664 | if (basedev->features & DASD_FEATURE_READONLY && | 1660 | if (basedev->features & DASD_FEATURE_READONLY && |
1665 | rq_data_dir(req) == WRITE) { | 1661 | rq_data_dir(req) == WRITE) { |
1666 | DBF_DEV_EVENT(DBF_ERR, basedev, | 1662 | DBF_DEV_EVENT(DBF_ERR, basedev, |
1667 | "Rejecting write request %p", | 1663 | "Rejecting write request %p", |
1668 | req); | 1664 | req); |
1669 | blkdev_dequeue_request(req); | 1665 | blk_start_request(req); |
1670 | __blk_end_request_all(req, -EIO); | 1666 | __blk_end_request_all(req, -EIO); |
1671 | continue; | 1667 | continue; |
1672 | } | 1668 | } |
@@ -1695,7 +1691,7 @@ static void __dasd_process_request_queue(struct dasd_block *block) | |||
1695 | "CCW creation failed (rc=%ld) " | 1691 | "CCW creation failed (rc=%ld) " |
1696 | "on request %p", | 1692 | "on request %p", |
1697 | PTR_ERR(cqr), req); | 1693 | PTR_ERR(cqr), req); |
1698 | blkdev_dequeue_request(req); | 1694 | blk_start_request(req); |
1699 | __blk_end_request_all(req, -EIO); | 1695 | __blk_end_request_all(req, -EIO); |
1700 | continue; | 1696 | continue; |
1701 | } | 1697 | } |
@@ -1705,7 +1701,7 @@ static void __dasd_process_request_queue(struct dasd_block *block) | |||
1705 | */ | 1701 | */ |
1706 | cqr->callback_data = (void *) req; | 1702 | cqr->callback_data = (void *) req; |
1707 | cqr->status = DASD_CQR_FILLED; | 1703 | cqr->status = DASD_CQR_FILLED; |
1708 | blkdev_dequeue_request(req); | 1704 | blk_start_request(req); |
1709 | list_add_tail(&cqr->blocklist, &block->ccw_queue); | 1705 | list_add_tail(&cqr->blocklist, &block->ccw_queue); |
1710 | dasd_profile_start(block, cqr, req); | 1706 | dasd_profile_start(block, cqr, req); |
1711 | } | 1707 | } |
@@ -2029,10 +2025,8 @@ static void dasd_flush_request_queue(struct dasd_block *block) | |||
2029 | return; | 2025 | return; |
2030 | 2026 | ||
2031 | spin_lock_irq(&block->request_queue_lock); | 2027 | spin_lock_irq(&block->request_queue_lock); |
2032 | while ((req = elv_next_request(block->request_queue))) { | 2028 | while ((req = blk_fetch_request(block->request_queue))) |
2033 | blkdev_dequeue_request(req); | ||
2034 | __blk_end_request_all(req, -EIO); | 2029 | __blk_end_request_all(req, -EIO); |
2035 | } | ||
2036 | spin_unlock_irq(&block->request_queue_lock); | 2030 | spin_unlock_irq(&block->request_queue_lock); |
2037 | } | 2031 | } |
2038 | 2032 | ||
diff --git a/drivers/s390/char/tape_block.c b/drivers/s390/char/tape_block.c index 5d035e4939dc..1e7967675980 100644 --- a/drivers/s390/char/tape_block.c +++ b/drivers/s390/char/tape_block.c | |||
@@ -93,7 +93,7 @@ __tapeblock_end_request(struct tape_request *ccw_req, void *data) | |||
93 | device->blk_data.block_position = -1; | 93 | device->blk_data.block_position = -1; |
94 | device->discipline->free_bread(ccw_req); | 94 | device->discipline->free_bread(ccw_req); |
95 | if (!list_empty(&device->req_queue) || | 95 | if (!list_empty(&device->req_queue) || |
96 | elv_next_request(device->blk_data.request_queue)) | 96 | blk_peek_request(device->blk_data.request_queue)) |
97 | tapeblock_trigger_requeue(device); | 97 | tapeblock_trigger_requeue(device); |
98 | } | 98 | } |
99 | 99 | ||
@@ -162,19 +162,16 @@ tapeblock_requeue(struct work_struct *work) { | |||
162 | spin_lock_irq(&device->blk_data.request_queue_lock); | 162 | spin_lock_irq(&device->blk_data.request_queue_lock); |
163 | while ( | 163 | while ( |
164 | !blk_queue_plugged(queue) && | 164 | !blk_queue_plugged(queue) && |
165 | elv_next_request(queue) && | 165 | (req = blk_fetch_request(queue)) && |
166 | nr_queued < TAPEBLOCK_MIN_REQUEUE | 166 | nr_queued < TAPEBLOCK_MIN_REQUEUE |
167 | ) { | 167 | ) { |
168 | req = elv_next_request(queue); | ||
169 | if (rq_data_dir(req) == WRITE) { | 168 | if (rq_data_dir(req) == WRITE) { |
170 | DBF_EVENT(1, "TBLOCK: Rejecting write request\n"); | 169 | DBF_EVENT(1, "TBLOCK: Rejecting write request\n"); |
171 | blkdev_dequeue_request(req); | ||
172 | spin_unlock_irq(&device->blk_data.request_queue_lock); | 170 | spin_unlock_irq(&device->blk_data.request_queue_lock); |
173 | blk_end_request_all(req, -EIO); | 171 | blk_end_request_all(req, -EIO); |
174 | spin_lock_irq(&device->blk_data.request_queue_lock); | 172 | spin_lock_irq(&device->blk_data.request_queue_lock); |
175 | continue; | 173 | continue; |
176 | } | 174 | } |
177 | blkdev_dequeue_request(req); | ||
178 | nr_queued++; | 175 | nr_queued++; |
179 | spin_unlock_irq(&device->blk_data.request_queue_lock); | 176 | spin_unlock_irq(&device->blk_data.request_queue_lock); |
180 | rc = tapeblock_start_request(device, req); | 177 | rc = tapeblock_start_request(device, req); |
diff --git a/drivers/sbus/char/jsflash.c b/drivers/sbus/char/jsflash.c index f572a4a1d141..6d4651684688 100644 --- a/drivers/sbus/char/jsflash.c +++ b/drivers/sbus/char/jsflash.c | |||
@@ -186,10 +186,7 @@ static void jsfd_do_request(struct request_queue *q) | |||
186 | { | 186 | { |
187 | struct request *req; | 187 | struct request *req; |
188 | 188 | ||
189 | req = elv_next_request(q); | 189 | req = blk_fetch_request(q); |
190 | if (req) | ||
191 | blkdev_dequeue_request(req); | ||
192 | |||
193 | while (req) { | 190 | while (req) { |
194 | struct jsfd_part *jdp = req->rq_disk->private_data; | 191 | struct jsfd_part *jdp = req->rq_disk->private_data; |
195 | unsigned long offset = blk_rq_pos(req) << 9; | 192 | unsigned long offset = blk_rq_pos(req) << 9; |
@@ -212,11 +209,8 @@ static void jsfd_do_request(struct request_queue *q) | |||
212 | jsfd_read(req->buffer, jdp->dbase + offset, len); | 209 | jsfd_read(req->buffer, jdp->dbase + offset, len); |
213 | err = 0; | 210 | err = 0; |
214 | end: | 211 | end: |
215 | if (!__blk_end_request_cur(req, err)) { | 212 | if (!__blk_end_request_cur(req, err)) |
216 | req = elv_next_request(q); | 213 | req = blk_fetch_request(q); |
217 | if (req) | ||
218 | blkdev_dequeue_request(req); | ||
219 | } | ||
220 | } | 214 | } |
221 | } | 215 | } |
222 | 216 | ||
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index ee308f6f7982..b12750f82169 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c | |||
@@ -1207,7 +1207,7 @@ int scsi_prep_return(struct request_queue *q, struct request *req, int ret) | |||
1207 | break; | 1207 | break; |
1208 | case BLKPREP_DEFER: | 1208 | case BLKPREP_DEFER: |
1209 | /* | 1209 | /* |
1210 | * If we defer, the elv_next_request() returns NULL, but the | 1210 | * If we defer, the blk_peek_request() returns NULL, but the |
1211 | * queue must be restarted, so we plug here if no returning | 1211 | * queue must be restarted, so we plug here if no returning |
1212 | * command will automatically do that. | 1212 | * command will automatically do that. |
1213 | */ | 1213 | */ |
@@ -1385,7 +1385,7 @@ static void scsi_kill_request(struct request *req, struct request_queue *q) | |||
1385 | struct scsi_target *starget = scsi_target(sdev); | 1385 | struct scsi_target *starget = scsi_target(sdev); |
1386 | struct Scsi_Host *shost = sdev->host; | 1386 | struct Scsi_Host *shost = sdev->host; |
1387 | 1387 | ||
1388 | blkdev_dequeue_request(req); | 1388 | blk_start_request(req); |
1389 | 1389 | ||
1390 | if (unlikely(cmd == NULL)) { | 1390 | if (unlikely(cmd == NULL)) { |
1391 | printk(KERN_CRIT "impossible request in %s.\n", | 1391 | printk(KERN_CRIT "impossible request in %s.\n", |
@@ -1477,7 +1477,7 @@ static void scsi_request_fn(struct request_queue *q) | |||
1477 | 1477 | ||
1478 | if (!sdev) { | 1478 | if (!sdev) { |
1479 | printk("scsi: killing requests for dead queue\n"); | 1479 | printk("scsi: killing requests for dead queue\n"); |
1480 | while ((req = elv_next_request(q)) != NULL) | 1480 | while ((req = blk_peek_request(q)) != NULL) |
1481 | scsi_kill_request(req, q); | 1481 | scsi_kill_request(req, q); |
1482 | return; | 1482 | return; |
1483 | } | 1483 | } |
@@ -1498,7 +1498,7 @@ static void scsi_request_fn(struct request_queue *q) | |||
1498 | * that the request is fully prepared even if we cannot | 1498 | * that the request is fully prepared even if we cannot |
1499 | * accept it. | 1499 | * accept it. |
1500 | */ | 1500 | */ |
1501 | req = elv_next_request(q); | 1501 | req = blk_peek_request(q); |
1502 | if (!req || !scsi_dev_queue_ready(q, sdev)) | 1502 | if (!req || !scsi_dev_queue_ready(q, sdev)) |
1503 | break; | 1503 | break; |
1504 | 1504 | ||
@@ -1514,7 +1514,7 @@ static void scsi_request_fn(struct request_queue *q) | |||
1514 | * Remove the request from the request list. | 1514 | * Remove the request from the request list. |
1515 | */ | 1515 | */ |
1516 | if (!(blk_queue_tagged(q) && !blk_queue_start_tag(q, req))) | 1516 | if (!(blk_queue_tagged(q) && !blk_queue_start_tag(q, req))) |
1517 | blkdev_dequeue_request(req); | 1517 | blk_start_request(req); |
1518 | sdev->device_busy++; | 1518 | sdev->device_busy++; |
1519 | 1519 | ||
1520 | spin_unlock(q->queue_lock); | 1520 | spin_unlock(q->queue_lock); |
diff --git a/drivers/scsi/scsi_transport_sas.c b/drivers/scsi/scsi_transport_sas.c index 50988cbf7b2d..d606452297cf 100644 --- a/drivers/scsi/scsi_transport_sas.c +++ b/drivers/scsi/scsi_transport_sas.c | |||
@@ -163,12 +163,10 @@ static void sas_smp_request(struct request_queue *q, struct Scsi_Host *shost, | |||
163 | int (*handler)(struct Scsi_Host *, struct sas_rphy *, struct request *); | 163 | int (*handler)(struct Scsi_Host *, struct sas_rphy *, struct request *); |
164 | 164 | ||
165 | while (!blk_queue_plugged(q)) { | 165 | while (!blk_queue_plugged(q)) { |
166 | req = elv_next_request(q); | 166 | req = blk_fetch_request(q); |
167 | if (!req) | 167 | if (!req) |
168 | break; | 168 | break; |
169 | 169 | ||
170 | blkdev_dequeue_request(req); | ||
171 | |||
172 | spin_unlock_irq(q->queue_lock); | 170 | spin_unlock_irq(q->queue_lock); |
173 | 171 | ||
174 | handler = to_sas_internal(shost->transportt)->f->smp_handler; | 172 | handler = to_sas_internal(shost->transportt)->f->smp_handler; |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index c75580345700..6e59d3b92ff2 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -818,8 +818,6 @@ static inline void blk_run_address_space(struct address_space *mapping) | |||
818 | blk_run_backing_dev(mapping->backing_dev_info, NULL); | 818 | blk_run_backing_dev(mapping->backing_dev_info, NULL); |
819 | } | 819 | } |
820 | 820 | ||
821 | extern void blkdev_dequeue_request(struct request *req); | ||
822 | |||
823 | /* | 821 | /* |
824 | * blk_rq_pos() : the current sector | 822 | * blk_rq_pos() : the current sector |
825 | * blk_rq_bytes() : bytes left in the entire request | 823 | * blk_rq_bytes() : bytes left in the entire request |
@@ -853,6 +851,13 @@ static inline unsigned int blk_rq_cur_sectors(const struct request *rq) | |||
853 | } | 851 | } |
854 | 852 | ||
855 | /* | 853 | /* |
854 | * Request issue related functions. | ||
855 | */ | ||
856 | extern struct request *blk_peek_request(struct request_queue *q); | ||
857 | extern void blk_start_request(struct request *rq); | ||
858 | extern struct request *blk_fetch_request(struct request_queue *q); | ||
859 | |||
860 | /* | ||
856 | * Request completion related functions. | 861 | * Request completion related functions. |
857 | * | 862 | * |
858 | * blk_update_request() completes given number of bytes and updates | 863 | * blk_update_request() completes given number of bytes and updates |
diff --git a/include/linux/elevator.h b/include/linux/elevator.h index 4e462878c9ca..1cb3372e65d8 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h | |||
@@ -103,10 +103,8 @@ extern int elv_merge(struct request_queue *, struct request **, struct bio *); | |||
103 | extern void elv_merge_requests(struct request_queue *, struct request *, | 103 | extern void elv_merge_requests(struct request_queue *, struct request *, |
104 | struct request *); | 104 | struct request *); |
105 | extern void elv_merged_request(struct request_queue *, struct request *, int); | 105 | extern void elv_merged_request(struct request_queue *, struct request *, int); |
106 | extern void elv_dequeue_request(struct request_queue *, struct request *); | ||
107 | extern void elv_requeue_request(struct request_queue *, struct request *); | 106 | extern void elv_requeue_request(struct request_queue *, struct request *); |
108 | extern int elv_queue_empty(struct request_queue *); | 107 | extern int elv_queue_empty(struct request_queue *); |
109 | extern struct request *elv_next_request(struct request_queue *q); | ||
110 | extern struct request *elv_former_request(struct request_queue *, struct request *); | 108 | extern struct request *elv_former_request(struct request_queue *, struct request *); |
111 | extern struct request *elv_latter_request(struct request_queue *, struct request *); | 109 | extern struct request *elv_latter_request(struct request_queue *, struct request *); |
112 | extern int elv_register_queue(struct request_queue *q); | 110 | extern int elv_register_queue(struct request_queue *q); |