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

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Tue Apr 22 09:56:03 MSK 2025


Reviewed-by: Pavel Tikhomirov <ptikhomirov at 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.zhadchenko at 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.



More information about the Devel mailing list