diff options
Diffstat (limited to 'drivers/block/viodasd.c')
-rw-r--r-- | drivers/block/viodasd.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/drivers/block/viodasd.c b/drivers/block/viodasd.c index ecccf65dce2f..390d69bb7c48 100644 --- a/drivers/block/viodasd.c +++ b/drivers/block/viodasd.c | |||
@@ -252,7 +252,7 @@ static int send_request(struct request *req) | |||
252 | struct viodasd_device *d; | 252 | struct viodasd_device *d; |
253 | unsigned long flags; | 253 | unsigned long flags; |
254 | 254 | ||
255 | start = (u64)req->sector << 9; | 255 | start = (u64)blk_rq_pos(req) << 9; |
256 | 256 | ||
257 | if (rq_data_dir(req) == READ) { | 257 | if (rq_data_dir(req) == READ) { |
258 | direction = DMA_FROM_DEVICE; | 258 | direction = DMA_FROM_DEVICE; |
@@ -361,19 +361,17 @@ 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, req->hard_nr_sectors); | 369 | viodasd_end_request(req, -EIO, blk_rq_sectors(req)); |
372 | continue; | 370 | continue; |
373 | } | 371 | } |
374 | /* Try sending the request */ | 372 | /* Try sending the request */ |
375 | if (send_request(req) != 0) | 373 | if (send_request(req) != 0) |
376 | viodasd_end_request(req, -EIO, req->hard_nr_sectors); | 374 | viodasd_end_request(req, -EIO, blk_rq_sectors(req)); |
377 | } | 375 | } |
378 | } | 376 | } |
379 | 377 | ||
@@ -590,7 +588,7 @@ static int viodasd_handle_read_write(struct vioblocklpevent *bevent) | |||
590 | err = vio_lookup_rc(viodasd_err_table, bevent->sub_result); | 588 | err = vio_lookup_rc(viodasd_err_table, bevent->sub_result); |
591 | printk(VIOD_KERN_WARNING "read/write error %d:0x%04x (%s)\n", | 589 | printk(VIOD_KERN_WARNING "read/write error %d:0x%04x (%s)\n", |
592 | event->xRc, bevent->sub_result, err->msg); | 590 | event->xRc, bevent->sub_result, err->msg); |
593 | num_sect = req->hard_nr_sectors; | 591 | num_sect = blk_rq_sectors(req); |
594 | } | 592 | } |
595 | qlock = req->q->queue_lock; | 593 | qlock = req->q->queue_lock; |
596 | spin_lock_irqsave(qlock, irq_flags); | 594 | spin_lock_irqsave(qlock, irq_flags); |