On 1/10/25 15:55, Pavel Tikhomirov wrote:


On 1/10/25 15:52, Alexander Atanasov wrote:
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.


If a caller issues write and sync in this order, should the caller expect that on receiving both completions sync was done after write?


For history, message from Alexander in slack:

> if you issue a write and a sync before write is completed you have no warranty that write is completed before sync

that is reasonable so reordering here between do_ploop_run_work and ploop_dispatch_pios is completely fine.




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.




--
Best regards, Tikhomirov Pavel
Senior Software Developer, Virtuozzo.

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to