With this patchset, we start to check if the upcoming requests for ploop have REQ_FUA flag. If the flag is present: - IO submits immediately, completion waits for BAT update - BAT updates submit immediately - set IOCB_DSYNC for writes and BAT updates - BAT update does not trigger flush If the flag is absent: - IO completion does not wait for BAT update - all BAT updates are periodically submitted in a batch - BAT update does not trigger flush
New parameter with metadata submit delay can be specified when setting up ploop table v2 changes: - drop flush after BAT updates even for FUA requests - set IOCB_DSYNC flag on writes triggered by FUA - complete all accumulated metadata on FLUSH requests - support REQ_PREFLUSH flag v3 changes: - rebased on top of 'ploop: md_pages map all pages at creation time' - added per metadata page locking - further optinized BAT accesses - fixed BAT changes not being immediately visible for upcoming requests - fixed COW/discard requests being postponed for too long Andrey Zhadchenko (13): dm-ploop: do not flush after metadata writes dm-ploop: set IOCB_DSYNC on all FUA requests dm-ploop: remove extra ploop_cluster_is_in_top_delta() dm-ploop: simplify llseek dm-ploop: reduce BAT accesses on discard completion dm-ploop: introduce per-md page locking dm-ploop: speed up ploop_prepare_bat_update() dm-ploop: make new allocations immediately visible in BAT dm-ploop: drop ploop_cluster_is_in_top_delta() dm-ploop: do not wait for BAT update for non-FUA requests dm-ploop: add delay for metadata writeback dm-ploop: submit all postponed metadata on REQ_OP_FLUSH dm-ploop: handle REQ_PREFLUSH drivers/md/dm-ploop-bat.c | 15 +- drivers/md/dm-ploop-cmd.c | 48 +++--- drivers/md/dm-ploop-map.c | 293 +++++++++++++++++++++++------------ drivers/md/dm-ploop-target.c | 16 +- drivers/md/dm-ploop.h | 34 ++-- 5 files changed, 267 insertions(+), 139 deletions(-) -- 2.39.3 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel