[Devel] [PATCH RH8 21/61] ploop: Convert remap_to_cluster()

Kirill Tkhai ktkhai at virtuozzo.com
Fri May 14 18:56:29 MSK 2021


Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
 drivers/md/dm-ploop-map.c |   10 +++++-----
 drivers/md/dm-ploop.h     |    9 ++++++++-
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/drivers/md/dm-ploop-map.c b/drivers/md/dm-ploop-map.c
index 75bed1721aa0..914e298305a8 100644
--- a/drivers/md/dm-ploop-map.c
+++ b/drivers/md/dm-ploop-map.c
@@ -494,9 +494,9 @@ static void handle_discard_bio(struct ploop *ploop, struct bio *bio,
 	atomic_inc(&ploop->nr_discard_bios);
 
 	remap_to_origin(ploop, bio);
-	remap_to_cluster(ploop, bio, dst_cluster);
+	remap_to_cluster(ploop, h, dst_cluster);
 
-	pos = to_bytes(bio->bi_iter.bi_sector);
+	pos = to_bytes(h->bi_iter.bi_sector);
 	ret = punch_hole(top_delta(ploop)->file, pos, h->bi_iter.bi_size);
 	if (ret)
 		h->bi_status = errno_to_blk_status(ret);
@@ -940,7 +940,7 @@ static void submit_delta_read(struct ploop *ploop, unsigned int level,
 	atomic_set(&piocb->count, 2);
 	piocb->bio = bio;
 
-	remap_to_cluster(ploop, bio, dst_cluster);
+	remap_to_cluster_bio(ploop, bio, dst_cluster);
 
 	bvec = __bvec_iter_bvec(bio->bi_io_vec, bio->bi_iter);
 	offset = bio->bi_iter.bi_bvec_done;
@@ -1320,8 +1320,8 @@ static void submit_rw_mapped(struct ploop *ploop, loff_t clu_pos, struct pio *pi
 	iter.iov_offset = pio->bi_iter.bi_bvec_done;
 
 	remap_to_origin(ploop, bio);
-	remap_to_cluster(ploop, bio, clu_pos);
-	pos = to_bytes(bio->bi_iter.bi_sector);
+	remap_to_cluster(ploop, pio, clu_pos);
+	pos = to_bytes(pio->bi_iter.bi_sector);
 
 	call_rw_iter(top_delta(ploop)->file, pos, rw, &iter, bio);
 }
diff --git a/drivers/md/dm-ploop.h b/drivers/md/dm-ploop.h
index 61332b83eea8..6abe21d0ad0f 100644
--- a/drivers/md/dm-ploop.h
+++ b/drivers/md/dm-ploop.h
@@ -308,8 +308,15 @@ static inline void remap_to_origin(struct ploop *ploop, struct bio *bio)
 	bio_set_dev(bio, ploop->origin_dev->bdev);
 }
 
-static inline void remap_to_cluster(struct ploop *ploop, struct bio *bio,
+static inline void remap_to_cluster(struct ploop *ploop, struct pio *pio,
 				    unsigned int cluster)
+{
+	pio->bi_iter.bi_sector &= ((1 << ploop->cluster_log) - 1);
+	pio->bi_iter.bi_sector |= (cluster << ploop->cluster_log);
+}
+
+static inline void remap_to_cluster_bio(struct ploop *ploop, struct bio *bio,
+					unsigned int cluster)
 {
 	bio->bi_iter.bi_sector &= ((1 << ploop->cluster_log) - 1);
 	bio->bi_iter.bi_sector |= (cluster << ploop->cluster_log);




More information about the Devel mailing list