diff options
Diffstat (limited to 'kernel/drivers/s390/block/xpram.c')
-rw-r--r-- | kernel/drivers/s390/block/xpram.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/drivers/s390/block/xpram.c b/kernel/drivers/s390/block/xpram.c index 7d4e9397a..288f59a41 100644 --- a/kernel/drivers/s390/block/xpram.c +++ b/kernel/drivers/s390/block/xpram.c @@ -181,7 +181,7 @@ static unsigned long xpram_highest_page_index(void) /* * Block device make request function. */ -static void xpram_make_request(struct request_queue *q, struct bio *bio) +static blk_qc_t xpram_make_request(struct request_queue *q, struct bio *bio) { xpram_device_t *xdev = bio->bi_bdev->bd_disk->private_data; struct bio_vec bvec; @@ -190,6 +190,8 @@ static void xpram_make_request(struct request_queue *q, struct bio *bio) unsigned long page_addr; unsigned long bytes; + blk_queue_split(q, &bio, q->bio_split); + if ((bio->bi_iter.bi_sector & 7) != 0 || (bio->bi_iter.bi_size & 4095) != 0) /* Request is not page-aligned. */ @@ -220,11 +222,11 @@ static void xpram_make_request(struct request_queue *q, struct bio *bio) index++; } } - set_bit(BIO_UPTODATE, &bio->bi_flags); - bio_endio(bio, 0); - return; + bio_endio(bio); + return BLK_QC_T_NONE; fail: bio_io_error(bio); + return BLK_QC_T_NONE; } static int xpram_getgeo(struct block_device *bdev, struct hd_geometry *geo) |