On 1/24/25 23:35, Alexander Atanasov wrote:
@@ -157,11 +161,13 @@ static u32 ploop_find_bat_entry(struct ploop *ploop, u32
dst_clu, bool *is_locke
u32 i, end, *bat_entries, clu = U32_MAX;
struct rb_node *node;
struct md_page *md;
+ unsigned long flags;
- read_lock_irq(&ploop->bat_rwlock);
ploop_for_each_md_page(ploop, md, node) {
ploop_init_be_iter(ploop, md->id, &i, &end);
bat_entries = md->kmpage;
+
+ spin_lock_irqsave(&md->md_lock, flags); /* read */
for (; i <= end; i++) {
if (READ_ONCE(bat_entries[i]) != dst_clu)
continue;
Same thing here, if we had _irq and now have _irqsave carefull
explanation is required, patch has none.
+-< ploop_find_bat_entry
+-< ploop_grow_relocate_cluster
| +-< ploop_process_resize_cmd
| | +-< ploop_resize
| | | +-< ploop_message # process context
--
Best regards, Tikhomirov Pavel
Senior Software Developer, Virtuozzo.
_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel