[Devel] [PATCH RH8 1/5] ploop: Introduce {alloc,free}_pio()

Kirill Tkhai ktkhai at virtuozzo.com
Wed Jul 21 19:00:13 MSK 2021


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

diff --git a/drivers/md/dm-ploop-cmd.c b/drivers/md/dm-ploop-cmd.c
index b9be80492eae..d4dc3746ec29 100644
--- a/drivers/md/dm-ploop-cmd.c
+++ b/drivers/md/dm-ploop-cmd.c
@@ -613,7 +613,7 @@ static int process_merge_latest_snapshot(struct ploop *ploop)
 			ret = -EINTR;
 			break;
 		}
-		pio = kmalloc(sizeof(*pio), GFP_KERNEL);
+		pio = alloc_pio(ploop, GFP_KERNEL);
 		if (!pio) {
 			ret = -ENOMEM;
 			break;
diff --git a/drivers/md/dm-ploop-map.c b/drivers/md/dm-ploop-map.c
index 75dc2616f52e..d0bdd06d07c1 100644
--- a/drivers/md/dm-ploop-map.c
+++ b/drivers/md/dm-ploop-map.c
@@ -211,7 +211,7 @@ static void do_pio_endio(struct pio *pio)
 	endio_cb(pio, endio_cb_data, pio->bi_status);
 
 	if (free_on_endio)
-		kfree(pio);
+		free_pio(pio->ploop, pio);
 }
 
 void pio_endio(struct pio *pio)
@@ -264,7 +264,7 @@ static struct pio * split_and_chain_pio(struct ploop *ploop,
 {
 	struct pio *split;
 
-	split = kmalloc(sizeof(*split), GFP_NOIO);
+	split = alloc_pio(ploop, GFP_NOIO);
 	if (!split)
 		return NULL;
 
@@ -833,7 +833,7 @@ static void ploop_advance_local_after_bat_wb(struct ploop *ploop,
 
 static void free_piwb(struct ploop_index_wb *piwb)
 {
-	kfree(piwb->pio);
+	free_pio(piwb->ploop, piwb->pio);
 	put_page(piwb->bat_page);
 	kfree(piwb);
 }
@@ -921,7 +921,7 @@ static int ploop_prepare_bat_update(struct ploop *ploop, struct md_page *md,
 	ploop_index_wb_init(piwb, ploop);
 
 	piwb->bat_page = page = alloc_page(GFP_NOIO);
-	piwb->pio = pio = kmalloc(sizeof(*pio), GFP_NOIO);
+	piwb->pio = pio = alloc_pio(ploop, GFP_NOIO);
 	if (!page || !pio)
 		goto err;
 	init_pio(ploop, REQ_OP_WRITE, pio);
diff --git a/drivers/md/dm-ploop.h b/drivers/md/dm-ploop.h
index b10820887350..78e361566895 100644
--- a/drivers/md/dm-ploop.h
+++ b/drivers/md/dm-ploop.h
@@ -547,6 +547,16 @@ static inline bool fake_merge_pio(struct pio *pio)
 	return false;
 }
 
+static inline struct pio *alloc_pio(struct ploop *ploop, gfp_t flags)
+{
+	return kmalloc(sizeof(struct pio), flags);
+}
+
+static inline void free_pio(struct ploop *ploop, struct pio *pio)
+{
+	kfree(pio);
+}
+
 extern void md_page_insert(struct ploop *ploop, struct md_page *md);
 extern void ploop_free_md_page(struct md_page *md);
 extern void free_md_pages_tree(struct rb_root *root);




More information about the Devel mailing list