Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=4c4e21486154c8db93c7e82a4b3ab5f621cd1d97
Commit:     4c4e21486154c8db93c7e82a4b3ab5f621cd1d97
Parent:     fd539832c7d3a242269374dbcae2cd54da150930
Author:     Kiyoshi Ueda <[EMAIL PROTECTED]>
AuthorDate: Mon Jan 28 10:29:42 2008 +0100
Committer:  Jens Axboe <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 10:36:54 2008 +0100

    blk_end_request: changing s390 (take 4)
    
    This patch converts s390 to use blk_end_request interfaces.
    Related 'uptodate' arguments are converted to 'error'.
    
    As a result, the interfaces of internal functions below are changed:
      o dasd_end_request
      o tapeblock_end_request
    
    Cc: Martin Schwidefsky <[EMAIL PROTECTED]>
    Cc: Heiko Carstens <[EMAIL PROTECTED]>
    Cc: [EMAIL PROTECTED]
    Signed-off-by: Kiyoshi Ueda <[EMAIL PROTECTED]>
    Signed-off-by: Jun'ichi Nomura <[EMAIL PROTECTED]>
    Signed-off-by: Jens Axboe <[EMAIL PROTECTED]>
---
 drivers/s390/block/dasd.c      |   17 +++++++++--------
 drivers/s390/char/tape_block.c |   13 ++++++-------
 2 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 1db15f3..d640427 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -1595,12 +1595,10 @@ void dasd_block_clear_timer(struct dasd_block *block)
 /*
  * posts the buffer_cache about a finalized request
  */
-static inline void dasd_end_request(struct request *req, int uptodate)
+static inline void dasd_end_request(struct request *req, int error)
 {
-       if (end_that_request_first(req, uptodate, req->hard_nr_sectors))
+       if (__blk_end_request(req, error, blk_rq_bytes(req)))
                BUG();
-       add_disk_randomness(req->rq_disk);
-       end_that_request_last(req, uptodate);
 }
 
 /*
@@ -1657,7 +1655,7 @@ static void __dasd_process_request_queue(struct 
dasd_block *block)
                                      "Rejecting write request %p",
                                      req);
                        blkdev_dequeue_request(req);
-                       dasd_end_request(req, 0);
+                       dasd_end_request(req, -EIO);
                        continue;
                }
                cqr = basedev->discipline->build_cp(basedev, block, req);
@@ -1686,7 +1684,7 @@ static void __dasd_process_request_queue(struct 
dasd_block *block)
                                      "on request %p",
                                      PTR_ERR(cqr), req);
                        blkdev_dequeue_request(req);
-                       dasd_end_request(req, 0);
+                       dasd_end_request(req, -EIO);
                        continue;
                }
                /*
@@ -1705,11 +1703,14 @@ static void __dasd_cleanup_cqr(struct dasd_ccw_req *cqr)
 {
        struct request *req;
        int status;
+       int error = 0;
 
        req = (struct request *) cqr->callback_data;
        dasd_profile_end(cqr->block, cqr, req);
        status = cqr->memdev->discipline->free_cp(cqr, req);
-       dasd_end_request(req, status);
+       if (status <= 0)
+               error = status ? status : -EIO;
+       dasd_end_request(req, error);
 }
 
 /*
@@ -2009,7 +2010,7 @@ static void dasd_flush_request_queue(struct dasd_block 
*block)
        spin_lock_irq(&block->request_queue_lock);
        while ((req = elv_next_request(block->request_queue))) {
                blkdev_dequeue_request(req);
-               dasd_end_request(req, 0);
+               dasd_end_request(req, -EIO);
        }
        spin_unlock_irq(&block->request_queue_lock);
 }
diff --git a/drivers/s390/char/tape_block.c b/drivers/s390/char/tape_block.c
index eeb92e2..ddc4a11 100644
--- a/drivers/s390/char/tape_block.c
+++ b/drivers/s390/char/tape_block.c
@@ -74,11 +74,10 @@ tapeblock_trigger_requeue(struct tape_device *device)
  * Post finished request.
  */
 static void
-tapeblock_end_request(struct request *req, int uptodate)
+tapeblock_end_request(struct request *req, int error)
 {
-       if (end_that_request_first(req, uptodate, req->hard_nr_sectors))
+       if (__blk_end_request(req, error, blk_rq_bytes(req)))
                BUG();
-       end_that_request_last(req, uptodate);
 }
 
 static void
@@ -91,7 +90,7 @@ __tapeblock_end_request(struct tape_request *ccw_req, void 
*data)
 
        device = ccw_req->device;
        req = (struct request *) data;
-       tapeblock_end_request(req, ccw_req->rc == 0);
+       tapeblock_end_request(req, (ccw_req->rc == 0) ? 0 : -EIO);
        if (ccw_req->rc == 0)
                /* Update position. */
                device->blk_data.block_position =
@@ -119,7 +118,7 @@ tapeblock_start_request(struct tape_device *device, struct 
request *req)
        ccw_req = device->discipline->bread(device, req);
        if (IS_ERR(ccw_req)) {
                DBF_EVENT(1, "TBLOCK: bread failed\n");
-               tapeblock_end_request(req, 0);
+               tapeblock_end_request(req, -EIO);
                return PTR_ERR(ccw_req);
        }
        ccw_req->callback = __tapeblock_end_request;
@@ -132,7 +131,7 @@ tapeblock_start_request(struct tape_device *device, struct 
request *req)
                 * Start/enqueueing failed. No retries in
                 * this case.
                 */
-               tapeblock_end_request(req, 0);
+               tapeblock_end_request(req, -EIO);
                device->discipline->free_bread(ccw_req);
        }
 
@@ -177,7 +176,7 @@ tapeblock_requeue(struct work_struct *work) {
                if (rq_data_dir(req) == WRITE) {
                        DBF_EVENT(1, "TBLOCK: Rejecting write request\n");
                        blkdev_dequeue_request(req);
-                       tapeblock_end_request(req, 0);
+                       tapeblock_end_request(req, -EIO);
                        continue;
                }
                spin_unlock_irq(&device->blk_data.request_queue_lock);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to