[Devel] [PATCH vz9] dm-ploop: fix and rework md updates

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Wed Feb 12 11:08:13 MSK 2025



On 2/11/25 22:25, Alexander Atanasov wrote:
> @@ -2607,6 +2674,7 @@ int ploop_prepare_reloc_index_wb(struct ploop *ploop,
>   		type = PIWB_TYPE_RELOC;
>   
>   	err = -EIO;
> +	spin_lock_irq(&ploop->bat_lock);
>   	if (test_bit(MD_DIRTY, &md->status) || test_bit(MD_WRITEBACK, &md->status)) {
>   		PL_ERR("Unexpected md status: %lx", md->status);
>   		goto out_error;
> @@ -2629,12 +2697,13 @@ int ploop_prepare_reloc_index_wb(struct ploop *ploop,
>   		if (err)
>   			goto out_reset;
>   	}
> +	spin_unlock_irq(&ploop->bat_lock);
>   
>   	*ret_md = md;
>   	return 0;
>   
>   out_reset:
> -	ploop_break_bat_update(ploop, md);
> +	ploop_break_bat_update(ploop, md, piwb);
>   out_error:
>   	return err;
>   }

You forgot to release bat_lock on out_reset error path.

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



More information about the Devel mailing list