[Devel] [RFC PATCH vz9 v6 23/62] dm-ploop: make new allocations immediately visible in BAT

Alexander Atanasov alexander.atanasov at virtuozzo.com
Mon Jan 20 15:06:05 MSK 2025


On 20.01.25 9:41, Pavel Tikhomirov wrote:
> On 12/6/24 05:55, Alexander Atanasov wrote:
>> @@ -1402,6 +1402,12 @@ static void ploop_submit_cow_index_wb(struct 
>> ploop_cow *cow)
>>       WARN_ON(to[clu]);
>>       WRITE_ONCE(to[clu], cow->dst_clu);
>> +    write_lock_irqsave(&md->lock, flags);
> 
> Should have _irq suffix.

There is a patch at the end of the series that removes
all save/restore variants. I will leave this as is - it is working but 
not optimal.

> 
>> +    to = md->kmpage;
>> +    WRITE_ONCE(to[clu], cow->dst_clu);
>> +    WRITE_ONCE(md->bat_levels[clu], ploop_top_level(ploop));
>> +    write_unlock_irqrestore(&md->lock, flags);
>> +
>>       /* Prevent double clearing of holes_bitmap bit on complete_cow() */
>>       cow->dst_clu = BAT_ENTRY_NONE;
>>       spin_lock_irq(&ploop->deferred_lock);
> 
> Same as here.
> 
> note: Only possible call stack:
> 
>    +-< ploop_submit_cow_index_wb
>      +-< ploop_process_one_delta_cow
>      | +-< ploop_process_delta_cow
>      | | +-< do_ploop_run_work
>      | | | +-< do_ploop_work
>      | | | +-< ploop_worker
> 
> it is always in process context.


Do you have traces from enospc timer  ? for cow?

I think it is safe (as in defensive) to use save/restore everythere 
until timer is changed.

-- 
Regards,
Alexander Atanasov



More information about the Devel mailing list