Write requests in writethrough mode mean that QEMU sends a separate flush request (i.e. fdatasync) after each completed write request. This is unnecessary overhead when we can just pass a flag for the write request that gives us the desired FUA semantics.
Unfortunately, this made a problem in the adaptive polling algorithm apparent that would result in a performance regression in some cases with FUA support in file-posix. Therefore, adaptive polling is changed in this series, too, to avoid the regression. Kevin Wolf (5): file-posix: Support FUA writes block/io: Ignore FUA with cache.no-flush=on aio: Create AioPolledEvent aio-posix: Factor out adjust_polling_time() aio-posix: Separate AioPolledEvent per AioHandler include/block/aio.h | 5 ++- include/block/raw-aio.h | 8 +++- util/aio-posix.h | 1 + block/file-posix.c | 26 ++++++++---- block/io.c | 4 ++ block/io_uring.c | 13 +++--- block/linux-aio.c | 24 +++++++++-- util/aio-posix.c | 94 ++++++++++++++++++++++++++--------------- util/async.c | 1 - meson.build | 4 ++ 10 files changed, 125 insertions(+), 55 deletions(-) -- 2.48.1