[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