Reviewed-by: Pavel Tikhomirov <ptikhomi...@virtuozzo.com>

On 4/22/25 14:29, Andrey Zhadchenko wrote:
  - 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
Signed-off-by: Andrey Zhadchenko <andrey.zhadche...@virtuozzo.com>
---
  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,

--
Best regards, Pavel Tikhomirov
Senior Software Developer, Virtuozzo.

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to