[Devel] [PATCH RH8 3/8] ploop: Introduce ploop_init_be_iter()

Kirill Tkhai ktkhai at virtuozzo.com
Thu Jul 1 18:14:31 MSK 2021


Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
 drivers/md/dm-ploop-bat.c |    2 +-
 drivers/md/dm-ploop-cmd.c |   12 ++++++------
 drivers/md/dm-ploop.h     |   14 ++++++++++----
 3 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/drivers/md/dm-ploop-bat.c b/drivers/md/dm-ploop-bat.c
index 6fb5cdc5c749..a3abf1f509ef 100644
--- a/drivers/md/dm-ploop-bat.c
+++ b/drivers/md/dm-ploop-bat.c
@@ -442,7 +442,7 @@ static void apply_delta_mappings(struct ploop *ploop, struct ploop_delta *deltas
 			memcpy(bat_entries, hdr, sizeof(struct ploop_pvd_header));
 		}
 
-		init_bat_entries_iter(ploop, md->id, &i, &end);
+		ploop_init_be_iter(ploop, md->id, &i, &end);
 
 		for (; i <= end; i++) {
 			clu = page_clu_idx_to_bat_clu(md->id, i);
diff --git a/drivers/md/dm-ploop-cmd.c b/drivers/md/dm-ploop-cmd.c
index 64e46d1b39f0..9406a1d61000 100644
--- a/drivers/md/dm-ploop-cmd.c
+++ b/drivers/md/dm-ploop-cmd.c
@@ -40,7 +40,7 @@ static void ploop_advance_holes_bitmap(struct ploop *ploop,
 		set_bit(i, ploop->holes_bitmap);
 	swap(cmd->resize.hb_nr, ploop->hb_nr);
 	ploop_for_each_md_page(ploop, md, node) {
-		init_bat_entries_iter(ploop, md->id, &i, &end);
+		ploop_init_be_iter(ploop, md->id, &i, &end);
 		bat_entries = kmap_atomic(md->page);
 		for (; i <= end; i++) {
 			if (!md_page_cluster_is_in_top_delta(ploop, md, i))
@@ -151,7 +151,7 @@ static u32 ploop_find_bat_entry(struct ploop *ploop, u32 dst_clu, bool *is_locke
 
 	read_lock_irq(&ploop->bat_rwlock);
 	ploop_for_each_md_page(ploop, md, node) {
-		init_bat_entries_iter(ploop, md->id, &i, &end);
+		ploop_init_be_iter(ploop, md->id, &i, &end);
 		bat_entries = kmap_atomic(md->page);
 		for (; i <= end; i++) {
 			if (bat_entries[i] != dst_clu)
@@ -695,7 +695,7 @@ static void notify_delta_merged(struct ploop *ploop, u8 level, void *hdr,
 
 	write_lock_irq(&ploop->bat_rwlock);
 	ploop_for_each_md_page(ploop, md, node) {
-		init_bat_entries_iter(ploop, md->id, &i, &end);
+		ploop_init_be_iter(ploop, md->id, &i, &end);
 		bat_entries = kmap_atomic(md->page);
 		for (; i <= end; i++) {
 			clu = page_clu_idx_to_bat_clu(md->id, i);
@@ -918,7 +918,7 @@ static int process_flip_upper_deltas(struct ploop *ploop)
 
 	/* Flip bat entries */
 	ploop_for_each_md_page(ploop, md, node) {
-		init_bat_entries_iter(ploop, md->id, &i, &end);
+		ploop_init_be_iter(ploop, md->id, &i, &end);
 		bat_entries = kmap_atomic(md->page);
 		for (; i <= end; i++) {
 			if (bat_entries[i] == BAT_ENTRY_NONE)
@@ -957,7 +957,7 @@ static int process_tracking_start(struct ploop *ploop, void *tracking_bitmap,
 	nr = 0;
 
 	ploop_for_each_md_page(ploop, md, node) {
-		init_bat_entries_iter(ploop, md->id, &i, &end);
+		ploop_init_be_iter(ploop, md->id, &i, &end);
 		bat_entries = kmap_atomic(md->page);
 		for (; i <= end; i++) {
 			dst_clu = bat_entries[i];
@@ -1019,7 +1019,7 @@ static u32 max_dst_clu_in_top_delta(struct ploop *ploop)
 
 	read_lock_irq(&ploop->bat_rwlock);
 	ploop_for_each_md_page(ploop, md, node) {
-		init_bat_entries_iter(ploop, md->id, &i, &end);
+		ploop_init_be_iter(ploop, md->id, &i, &end);
 		bat_entries = kmap_atomic(md->page);
 		for (; i <= end; i++) {
 			if (dst_clu < bat_entries[i] &&
diff --git a/drivers/md/dm-ploop.h b/drivers/md/dm-ploop.h
index 3746443c3325..48ad2be49468 100644
--- a/drivers/md/dm-ploop.h
+++ b/drivers/md/dm-ploop.h
@@ -463,10 +463,10 @@ static inline bool md_page_cluster_is_in_top_delta(struct ploop *ploop,
 	return ret;
 }
 
-static inline void init_bat_entries_iter(struct ploop *ploop, u32 page_id,
-					 u32 *start, u32 *end)
+static inline void init_be_iter(u32 nr_be, u32 page_id,
+				u32 *start, u32 *end)
 {
-	u32 last_page = bat_clu_to_page_nr(ploop->nr_bat_entries - 1);
+	u32 last_page = bat_clu_to_page_nr(nr_be - 1);
 	unsigned int count = PAGE_SIZE / sizeof(map_index_t);
 
 	*start = 0;
@@ -475,7 +475,13 @@ static inline void init_bat_entries_iter(struct ploop *ploop, u32 page_id,
 
 	*end = count - 1;
 	if (page_id == last_page)
-		*end = ((ploop->nr_bat_entries + PLOOP_MAP_OFFSET) % count) - 1;
+		*end = ((nr_be + PLOOP_MAP_OFFSET) % count) - 1;
+}
+
+static inline void ploop_init_be_iter(struct ploop *ploop, u32 page_id,
+				      u32 *start, u32 *end)
+{
+	init_be_iter(ploop->nr_bat_entries, page_id, start, end);
 }
 
 extern void __track_pio(struct ploop *ploop, struct pio *pio);




More information about the Devel mailing list