[Devel] [PATCH RHEL9 COMMIT] dm-qcow2: enhance merge_backward progress reporting

Konstantin Khorenko khorenko at virtuozzo.com
Tue Apr 22 21:11:51 MSK 2025


The commit is pushed to "branch-rh9-5.14.0-427.44.1.vz9.80.x-ovz" and will appear at git at bitbucket.org:openvz/vzkernel.git
after rh9-5.14.0-427.44.1.vz9.80.29
------>
commit 97f5ae88975048ea5f87648779d173f6e09a6491
Author: Andrey Zhadchenko <andrey.zhadchenko at virtuozzo.com>
Date:   Tue Apr 22 09:29:32 2025 +0300

    dm-qcow2: enhance merge_backward progress reporting
    
     - Do not reset progress and maximum progress on every stage:
       userspace gets confused when it sees 0/0 on a ready stage.
    
     - Set progress one more time at the end of qcow2_service_iter(),
       as we reached the end successfully.
    
    https://virtuozzo.atlassian.net/browse/VSTOR-103508
    Fixes: 4a2265edbd0d ("dm-qcow2: add merge_backward progress command")
    
    Signed-off-by: Andrey Zhadchenko <andrey.zhadchenko at virtuozzo.com>
    Reviewed-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
    
    Feature: dm-qcow2: block device over QCOW2 files driver
---
 drivers/md/dm-qcow2-cmd.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/md/dm-qcow2-cmd.c b/drivers/md/dm-qcow2-cmd.c
index 89828f64cfe3..e77052ad61e6 100644
--- a/drivers/md/dm-qcow2-cmd.c
+++ b/drivers/md/dm-qcow2-cmd.c
@@ -111,6 +111,7 @@ static int qcow2_service_iter(struct qcow2_target *tgt, struct qcow2 *qcow2,
 		ret = blk_status_to_errno(READ_ONCE(service_status));
 	}
 
+	backward_merge_update_progress(tgt, (pos > end) ? end : pos);
 	return ret;
 }
 ALLOW_ERROR_INJECTION(qcow2_service_iter, ERRNO);
@@ -178,8 +179,10 @@ static void __backward_merge_update_stage(struct qcow2_target *tgt,
 					   enum qcow2_backward_merge_stage stage)
 {
 	tgt->backward_merge.stage = stage;
-	tgt->backward_merge.progress = 0;
-	tgt->backward_merge.max_progress = 0;
+	if (stage == BACKWARD_MERGE_STAGE_START) {
+		tgt->backward_merge.progress = 0;
+		tgt->backward_merge.max_progress = 0;
+	}
 }
 
 static void backward_merge_update_stage(struct qcow2_target *tgt,


More information about the Devel mailing list