I'm going to bring block-status driven, async copying process to block-copy, to make it fast. The first step is to limit memory usage of backup, here is it.
v2: [mostly by Max's comments] Now based on master (Thank you Max!) 01: add Max's r-b 02: add Max's r-b 03: - refactor block_copy_do_copy goto/return - add small comment to block_copy_do_copy 04: - a lot of renaming and wording fixes - refactor to use "available" instead of "taken" - refactor co_get_from_shres 05: rebase on 04 changes 06: drop extra things from max_transfer calculation Vladimir Sementsov-Ogievskiy (6): block/block-copy: allocate buffer in block_copy_with_bounce_buffer block/block-copy: limit copy_range_size to 16 MiB block/block-copy: refactor copying util: introduce SharedResource block/block-copy: add memory limit block/block-copy: increase buffered copy request include/block/block-copy.h | 5 +- include/qemu/co-shared-resource.h | 71 ++++++++++++ block/block-copy.c | 182 +++++++++++++++--------------- util/qemu-co-shared-resource.c | 76 +++++++++++++ block/trace-events | 6 +- util/Makefile.objs | 1 + 6 files changed, 249 insertions(+), 92 deletions(-) create mode 100644 include/qemu/co-shared-resource.h create mode 100644 util/qemu-co-shared-resource.c -- 2.21.0