Ploop processes requsts in a different threads in parallel where possible which results in significant improvement in performance and makes further optimistations possible.
Along with changes in v4: - BAT writeback delay - Lists/Locking moving to lockless lists to reduce locking - Requests are prepared in the caller to reduce load of worker thread - REQ_FUA and REQ_PREFLUSH support - Convert bit fields to use atomic bitops - reduce locking - remove fsync worker to guarantee order of execution - Map all md pages at creation time - they are only freed on device destroy Known bug: - resize/grow is not working yet - delayed metadata writeback is not working - patch to disable it for testing - fast path is not working too - rcu lockups - patch to disable it for testing Further improvements: - make metadata writeback work in parallel - fsync to end pios in parallel Alexander Atanasov (36): dm-ploop: md_pages map all pages at creation time dm-ploop: Use READ_ONCE/WRITE_ONCE to access md page data dm-ploop: fsync after all pios are sent dm-ploop: move md status to use proper bitops dm-ploop: remove unneccessary lock dm-ploop: reduce the time lock is hold, taking it only to protect data dm-ploop: convert wait_list and wb_batch_llist to use lockless lists dm-ploop: convert enospc handling to use lockless lists dm-ploop: convert suspended_pios list to use lockless list dm-ploop: convert the rest of the lists to use llist variant dm-ploop: combine processing of pios thru prepare list and remove fsync worker dm-ploop: WIP move from wq to kthread dm-ploop: complete conversion of enospc and suspended pios to lockless dm-ploop: move preparations of pios into the caller from worker dm-ploop: fast path execution for reads dm-ploop: do not use a wrapper for set_bit to make a page writeback dm-ploop: BAT use only one list for writeback dm-ploop: make md writeback timeout to be per page dm-ploop: add interface to disable bat writeback delay dm-ploop: convert wb_batch_list to lockless variant dm-ploop: convert high_prio to status dm-ploop: split cow processing into two functions dm-ploop: debug patch , keep on top of stack dm-ploop: use jiffies when calculating writeback time dm-ploop: convert md page rw lock to spin lock dm-ploop: convert bat_rwlock to bat_lock spinlock dm-ploop: prepare bat updates under bat_lock dm-ploop: make ploop_bat_write_complete ready for parallel pio completion dm-ploop: fix access to batpages to use WRITE_ONCE dm-ploop: properly end pios attached to piwb pios dm-ploop: make ploop_submit_metadata_writeback return number of requests sent dm-ploop: introduce pio runner threads dm-ploop: add pio list ids to be used when passing pios to runners dm-ploop: process pios via runners dm-ploop: disable metadata writeback delay dm-ploop: disable fast path 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 | 58 +- drivers/md/dm-ploop-cmd.c | 137 ++-- drivers/md/dm-ploop-map.c | 1153 ++++++++++++++++++++++++---------- drivers/md/dm-ploop-target.c | 142 ++++- drivers/md/dm-ploop.h | 96 ++- 5 files changed, 1099 insertions(+), 487 deletions(-) -- 2.43.0 _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel