You can enqueue fsync as an op in io_uring, using link flag to sequence it after previous ops and drain flag to ensure no new ops are started until it completes.

You still need to wait for it to complete to report the commit success to the user, the cost of syscall itself is rather minor here.

Avoiding the syscall cost is about maximizing throughput, not minimizing latency. The media's time-to-durability is what it is.