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.

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