[Devel] [PATCH RHEL8 COMMIT] ploop: Kill target endio

Konstantin Khorenko khorenko at virtuozzo.com
Mon May 17 19:05:00 MSK 2021


The commit is pushed to "branch-rh8-4.18.0-240.1.1.vz8.5.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh8-4.18.0-240.1.1.vz8.5.30
------>
commit 45af41f119e4a4a9b2c4aba9e5069544ec84422d
Author: Kirill Tkhai <ktkhai at virtuozzo.com>
Date:   Mon May 17 19:05:00 2021 +0300

    ploop: Kill target endio
    
    Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
    
    =====================
    Patchset description:
    
    dm-ploop: Kill loop
    
    Intermediate patches can't be base for bisect.
    
    In scope of https://jira.sw.ru/browse/PSBM-123654
    
    Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
 drivers/md/dm-ploop-map.c    | 21 ++++++++++++---------
 drivers/md/dm-ploop-target.c |  1 -
 drivers/md/dm-ploop.h        |  1 -
 3 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/md/dm-ploop-map.c b/drivers/md/dm-ploop-map.c
index 42ed305a32f0..54ed057b10f3 100644
--- a/drivers/md/dm-ploop-map.c
+++ b/drivers/md/dm-ploop-map.c
@@ -32,6 +32,8 @@
  * become handled in ploop_map() as before.
  */
 
+static int ploop_endio(struct ploop *ploop, struct pio *pio);
+
 #define DM_MSG_PREFIX "ploop"
 
 #define ploop_bat_lock(ploop, exclusive, flags)					\
@@ -127,9 +129,14 @@ static int ploop_pio_cluster(struct ploop *ploop, struct pio *pio,
 static void call_bio_endio(struct pio *pio, void *data, blk_status_t bi_status)
 {
 	struct bio *bio = data;
+	int ret;
+
+	ret = ploop_endio(pio->ploop, pio);
 
-	bio->bi_status = bi_status;
-	bio_endio(bio);
+	if (bi_status)
+		bio->bi_status = bi_status;
+	if (ret == DM_ENDIO_DONE)
+		bio_endio(bio);
 }
 
 void pio_endio(struct pio *pio)
@@ -1680,10 +1687,8 @@ int ploop_map(struct dm_target *ti, struct bio *bio)
 	return DM_MAPIO_SUBMITTED;
 }
 
-int ploop_endio(struct dm_target *ti, struct bio *bio, blk_status_t *err)
+static int ploop_endio(struct ploop *ploop, struct pio *pio)
 {
-	struct pio *pio = bio_to_endio_hook(bio);
-	struct ploop *ploop = ti->private;
 	int ret = DM_ENDIO_DONE;
 
 	if (pio->ref_index != PLOOP_REF_INDEX_INVALID) {
@@ -1696,14 +1701,12 @@ int ploop_endio(struct dm_target *ti, struct bio *bio, blk_status_t *err)
 	}
 	/*
 	 * This function is called from the very beginning
-	 * of bio->bi_end_io (which is dm.c::clone_endio()).
+	 * of call_bio_endio().
 	 *
 	 * DM_ENDIO_DONE return value means handling goes OK.
 	 * DM_ENDIO_INCOMPLETE tells the caller to stop end io
 	 * processing, and that we are going to call bi_end_io
-	 * directly later again. This function (ploop_endio)
-	 * also will be called again then!
-	 * See dm.c::clone_endio() for the details.
+	 * directly later again.
 	 */
 	if (pio->action == PLOOP_END_IO_DATA_BIO)
 		ret = ploop_data_pio_end(pio);
diff --git a/drivers/md/dm-ploop-target.c b/drivers/md/dm-ploop-target.c
index 1913e836002d..29d2636f12c9 100644
--- a/drivers/md/dm-ploop-target.c
+++ b/drivers/md/dm-ploop-target.c
@@ -426,7 +426,6 @@ static struct target_type ploop_target = {
 	.ctr = ploop_ctr,
 	.dtr = ploop_dtr,
 	.map = ploop_map,
-	.end_io = ploop_endio,
 	.message = ploop_message,
 	.io_hints = ploop_io_hints,
 	.preresume = ploop_preresume,
diff --git a/drivers/md/dm-ploop.h b/drivers/md/dm-ploop.h
index 514ab38a8ae2..1b9a7ed8682c 100644
--- a/drivers/md/dm-ploop.h
+++ b/drivers/md/dm-ploop.h
@@ -518,7 +518,6 @@ extern void do_ploop_fsync_work(struct work_struct *ws);
 extern void process_deferred_cmd(struct ploop *ploop,
 			struct ploop_index_wb *piwb);
 extern int ploop_map(struct dm_target *ti, struct bio *bio);
-extern int ploop_endio(struct dm_target *ti, struct bio *bio, blk_status_t *err);
 extern int ploop_inflight_bios_ref_switch(struct ploop *ploop, bool killable);
 extern struct pio *find_lk_of_cluster(struct ploop *ploop, u32 cluster);
 extern void unlink_postponed_backup_endio(struct ploop *ploop,


More information about the Devel mailing list