[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