Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c4e2148 authored by Kiyoshi Ueda's avatar Kiyoshi Ueda Committed by Jens Axboe
Browse files

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: default avatarKiyoshi Ueda <k-ueda@ct.jp.nec.com>
Signed-off-by: default avatarJun'ichi Nomura <j-nomura@ce.jp.nec.com>
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent fd539832
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -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);
}
+6 −7
Original line number Diff line number Diff line
@@ -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);