[Devel] [PATCH vz9 v1 16/63] dm-ploop: introduce per-md page locking
Pavel Tikhomirov
ptikhomirov at virtuozzo.com
Thu Feb 6 12:02:59 MSK 2025
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.
More information about the Devel
mailing list