summaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-log-writes.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2017-08-23 13:10:32 -0400
committerJens Axboe <axboe@kernel.dk>2017-08-23 14:49:55 -0400
commit74d46992e0d9dee7f1f376de0d56d31614c8a17a (patch)
tree399c316bb960541135e557bc1765caeec6d00084 /drivers/md/dm-log-writes.c
parentc2ee070fb00365d7841f6661dcdc7fbe6620bdf8 (diff)
block: replace bi_bdev with a gendisk pointer and partitions index
This way we don't need a block_device structure to submit I/O. The block_device has different life time rules from the gendisk and request_queue and is usually only available when the block device node is open. Other callers need to explicitly create one (e.g. the lightnvm passthrough code, or the new nvme multipathing code). For the actual I/O path all that we need is the gendisk, which exists once per block device. But given that the block layer also does partition remapping we additionally need a partition index, which is used for said remapping in generic_make_request. Note that all the block drivers generally want request_queue or sometimes the gendisk, so this removes a layer of indirection all over the stack. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/md/dm-log-writes.c')
-rw-r--r--drivers/md/dm-log-writes.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/md/dm-log-writes.c b/drivers/md/dm-log-writes.c
index a1da0eb58a93..534a254eb977 100644
--- a/drivers/md/dm-log-writes.c
+++ b/drivers/md/dm-log-writes.c
@@ -198,7 +198,7 @@ static int write_metadata(struct log_writes_c *lc, void *entry,
198 } 198 }
199 bio->bi_iter.bi_size = 0; 199 bio->bi_iter.bi_size = 0;
200 bio->bi_iter.bi_sector = sector; 200 bio->bi_iter.bi_sector = sector;
201 bio->bi_bdev = lc->logdev->bdev; 201 bio_set_dev(bio, lc->logdev->bdev);
202 bio->bi_end_io = log_end_io; 202 bio->bi_end_io = log_end_io;
203 bio->bi_private = lc; 203 bio->bi_private = lc;
204 bio_set_op_attrs(bio, REQ_OP_WRITE, 0); 204 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
@@ -263,7 +263,7 @@ static int log_one_block(struct log_writes_c *lc,
263 } 263 }
264 bio->bi_iter.bi_size = 0; 264 bio->bi_iter.bi_size = 0;
265 bio->bi_iter.bi_sector = sector; 265 bio->bi_iter.bi_sector = sector;
266 bio->bi_bdev = lc->logdev->bdev; 266 bio_set_dev(bio, lc->logdev->bdev);
267 bio->bi_end_io = log_end_io; 267 bio->bi_end_io = log_end_io;
268 bio->bi_private = lc; 268 bio->bi_private = lc;
269 bio_set_op_attrs(bio, REQ_OP_WRITE, 0); 269 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
@@ -285,7 +285,7 @@ static int log_one_block(struct log_writes_c *lc,
285 } 285 }
286 bio->bi_iter.bi_size = 0; 286 bio->bi_iter.bi_size = 0;
287 bio->bi_iter.bi_sector = sector; 287 bio->bi_iter.bi_sector = sector;
288 bio->bi_bdev = lc->logdev->bdev; 288 bio_set_dev(bio, lc->logdev->bdev);
289 bio->bi_end_io = log_end_io; 289 bio->bi_end_io = log_end_io;
290 bio->bi_private = lc; 290 bio->bi_private = lc;
291 bio_set_op_attrs(bio, REQ_OP_WRITE, 0); 291 bio_set_op_attrs(bio, REQ_OP_WRITE, 0);
@@ -539,7 +539,7 @@ static void normal_map_bio(struct dm_target *ti, struct bio *bio)
539{ 539{
540 struct log_writes_c *lc = ti->private; 540 struct log_writes_c *lc = ti->private;
541 541
542 bio->bi_bdev = lc->dev->bdev; 542 bio_set_dev(bio, lc->dev->bdev);
543} 543}
544 544
545static int log_writes_map(struct dm_target *ti, struct bio *bio) 545static int log_writes_map(struct dm_target *ti, struct bio *bio)