mirror of
https://github.com/torvalds/linux.git
synced 2024-11-24 21:21:41 +00:00
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 <schwidefsky@de.ibm.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: linux390@de.ibm.com Signed-off-by: Kiyoshi Ueda <k-ueda@ct.jp.nec.com> Signed-off-by: Jun'ichi Nomura <j-nomura@ce.jp.nec.com> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
parent
fd539832c7
commit
4c4e214861
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user