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.
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel