This serie of patches bring thread safety to the smaller APIs used by block-copy, namely ratelimit, progressmeter, co-shared-resource and aiotask. The end goal is to reduce the usage of AioContexlock in block-copy, by introducing smaller granularity locks thus on making the block layer thread safe.
What's missing for block-copy to be fully thread-safe is fixing the CoSleep API to allow cross-thread sleep and wakeup. Paolo is working on it and will post the patches once his new CoSleep API is accepted. Patches 1-3 work on ratelimit, 4 covers progressmeter and 5 co-shared-resources. Signed-off-by: Emanuele Giuseppe Esposito <eespo...@redhat.com> --- v3: * Rebase on current master (had conflicts in block-copy), remove based-on in cover letter Emanuele Giuseppe Esposito (2): progressmeter: protect with a mutex co-shared-resource: protect with a mutex Paolo Bonzini (3): ratelimit: treat zero speed as unlimited block-copy: let ratelimit handle a speed of 0 blockjob: let ratelimit handle a speed of 0 block/block-copy.c | 28 ++++++-------- block/meson.build | 1 + block/progress_meter.c | 64 +++++++++++++++++++++++++++++++ blockjob.c | 46 +++++++++++++--------- include/qemu/co-shared-resource.h | 4 +- include/qemu/progress_meter.h | 34 ++++++++-------- include/qemu/ratelimit.h | 12 +++++- job-qmp.c | 8 +++- job.c | 3 ++ qemu-img.c | 9 +++-- util/qemu-co-shared-resource.c | 24 +++++++++--- 11 files changed, 168 insertions(+), 65 deletions(-) create mode 100644 block/progress_meter.c -- 2.31.1