[Devel] [PATCH VZ9] dm-ploop: fix error handling in ploop_prepare_reloc_index_wb

Andrey Zhadchenko andrey.zhadchenko at virtuozzo.com
Thu Jul 3 14:17:14 MSK 2025


LGTM

Reviewed-by: Andrey Zhadchenko <andrey.zhadchenko at virtuozzo.com>

On 7/3/25 11:42, Pavel Tikhomirov wrote:
> 1) Only cleanup what was acquired, e.g.: do not clear MD_UPDATING
>     if we didn't set it.
> 2) Do not use add_to_wblist uninitialized on error paths.
> 3) Make label names self-descriptive.
> 
> https://virtuozzo.atlassian.net/browse/VSTOR-108540
> Signed-off-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>
> ---
>   drivers/md/dm-ploop-map.c | 7 ++++---
>   1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/md/dm-ploop-map.c b/drivers/md/dm-ploop-map.c
> index 11767dd91950..55b39874beee 100644
> --- a/drivers/md/dm-ploop-map.c
> +++ b/drivers/md/dm-ploop-map.c
> @@ -2730,14 +2730,14 @@ int ploop_prepare_reloc_index_wb(struct ploop *ploop,
>   	/* Keep this test to be the same as in delay_if_md_busy */
>   	if (test_bit(MD_WRITEBACK, &md->status) || test_bit(MD_UPDATING, &md->status)) {
>   		err = -EBUSY;
> -		goto out_error;
> +		goto out_unlock;
>   	} else {
>   		set_bit(MD_UPDATING, &md->status);
>   	}
>   
>   	err = ploop_prepare_bat_update(ploop, md, type);
>   	if (err)
> -		goto out_error;
> +		goto out_clear_updating;
>   
>   	add_to_wblist = ploop_md_make_dirty(ploop, md);
>   
> @@ -2765,10 +2765,11 @@ int ploop_prepare_reloc_index_wb(struct ploop *ploop,
>   out_reset:
>   	ploop_break_bat_update(ploop, md, piwb);
>   	spin_lock_irq(&ploop->bat_lock);
> -out_error:
>   	if (add_to_wblist)
>   		clear_bit(MD_DIRTY, &md->status);
> +out_clear_updating:
>   	clear_bit(MD_UPDATING, &md->status);
> +out_unlock:
>   	spin_unlock_irq(&ploop->bat_lock);
>   
>   	return err;



More information about the Devel mailing list