[Devel] [RFC PATCH vz9 v6 08/62] dm-ploop: convert enospc handling to use lockless lists

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Thu Jan 9 10:15:36 MSK 2025


> @@ -177,10 +180,9 @@ static bool ploop_try_delay_enospc(struct ploop_rq *prq, struct pio *pio)
>   
>   	pr_err_once(PL_FMT("underlying disk is almost full"),
>   		ploop_device_name(ploop));
> -	ploop->event_enospc = true;
> -	list_add_tail(&pio->list, &ploop->enospc_pios);
> +	WRITE_ONCE(ploop->event_enospc, true);

Do we still need deferred_lock in ploop_get_event to protect 
event_enospc after this? Probably we can also use READ/WRITE_ONCE there.

> +	llist_add((struct llist_node *)(&pio->list), &ploop->enospc_pios);
>   unlock:
> -	spin_unlock_irqrestore(&ploop->deferred_lock, flags);
>   
>   	if (delayed)
>   		mod_timer(&ploop->enospc_timer, jiffies + PLOOP_ENOSPC_TIMEOUT);
-- 
Best regards, Tikhomirov Pavel
Senior Software Developer, Virtuozzo.



More information about the Devel mailing list