[Devel] [RFC PATCH vz9 v6 00/62] ploop optimistations and scalling

Alexander Atanasov alexander.atanasov at virtuozzo.com
Fri Jan 10 10:52:57 MSK 2025


On 10.01.25 9:43, Pavel Tikhomirov wrote:
> I didn't find specific patch for this comment so I'll leave it to patch 
> -00.
> 
> What if ploop_dispatch_pios and do_ploop_run_work(do_ploop_work) run 
> concurrently for one ploop on different cpus? Would not it be bad if
> ploop_dispatch_pios only dispatched part of pios and do_ploop_run_work 
> already starts processing them, or if do_ploop_run_work yet does not 
> "see" all pios from already fully dispatched ploop_dispatch_pios? That 
> can lead to arbitrary pio reordering.

This is not a problem if we reorder pios - i had the same worries and 
even tried to make the to be executed in sequence but it is not 
required. Filesystems are receiving and handling out of order requests 
and the callers must wait for completion before issuing further 
requests. Inside ploop completion is organized so when all split pios 
are done then the completion is performed.

Said in another way - if a caller issues two writes or read and write to 
the same place and he did not wait completion it is not our problem.



> 
> For instance imagine:
> 
> ploop_dispatch_pios () {
>                            do_ploop_run_work () {
>                              llcow_pios = llist_del_all(...);
>                              ...
> 
>    add data pio #1
>    add data pio #2
>    add flush pio #3
>                              llflush_pios = llist_del_all(...);
>                              process_ploop_fsync_work(llflush_pios);
>                            }
> }
> 
> This way a flush pio #3 will be processed before data pios #1 and #2.
> 

-- 
Regards,
Alexander Atanasov



More information about the Devel mailing list