aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/DAC960.c4
-rw-r--r--drivers/block/amiflop.c3
-rw-r--r--drivers/block/ataflop.c3
-rw-r--r--drivers/block/cciss.c4
-rw-r--r--drivers/block/cpqarray.c4
-rw-r--r--drivers/block/floppy.c6
-rw-r--r--drivers/block/hd.c3
-rw-r--r--drivers/block/mg_disk.c12
-rw-r--r--drivers/block/nbd.c4
-rw-r--r--drivers/block/paride/pcd.c3
-rw-r--r--drivers/block/paride/pd.c7
-rw-r--r--drivers/block/paride/pf.c3
-rw-r--r--drivers/block/ps3disk.c4
-rw-r--r--drivers/block/sunvdc.c3
-rw-r--r--drivers/block/swim.c12
-rw-r--r--drivers/block/swim3.c3
-rw-r--r--drivers/block/sx8.c8
-rw-r--r--drivers/block/ub.c8
-rw-r--r--drivers/block/viodasd.c4
-rw-r--r--drivers/block/virtio_blk.c4
-rw-r--r--drivers/block/xd.c12
-rw-r--r--drivers/block/xen-blkfront.c4
-rw-r--r--drivers/block/xsysace.c10
-rw-r--r--drivers/block/z2ram.c12
24 files changed, 48 insertions, 92 deletions
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
1344next_req: 1344next_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
1405repeat: 1405repeat:
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
905queue_next: 905queue_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;
763repeat: 763repeat:
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:
441static void do_vdc_request(struct request_queue *q) 441static 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
847queue_one_request: 845queue_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