On Thu, May 11, 2017 at 04:41:50PM +0200, Paolo Bonzini wrote: > This series uses mutexes or atomic operations around core block layer > operations. The remaining parts include: > > I've removed the failing assertion in bdrv_aligned_pwritev in order to > test block migration. > > Paolo > > v1->v2: add missing comment for 'wakeup' member [Fam] > rewrite throttle-groups part [Stefan] > rename ThrottleState CoMutex [Fam] > minor stats64 changes [Fam, Roman, me] > fixed bdrv_flush [Fam, me] > dropped request spinlock optimization for now [Stefan] > avoid global dirty bitmap mutex [Fam] > avoid introducing unlocked bdrv_get_dirty API [Stefan] > replaced spinlock with mutex for accounting [Stefan] > > > Paolo Bonzini (18): > block: access copy_on_read with atomic ops > block: access quiesce_counter with atomic ops > block: access io_limits_disabled with atomic ops > block: access serialising_in_flight with atomic ops > block: access wakeup with atomic ops > block: access io_plugged with atomic ops > throttle-groups: only start one coroutine from drained_begin > throttle-groups: do not use qemu_co_enter_next > throttle-groups: protect throttled requests with a CoMutex > util: add stats64 module > block: use Stat64 for wr_highest_offset > block: access write_gen with atomics > block: protect tracked_requests and flush_queue with reqs_lock > block: introduce dirty_bitmap_mutex > migration/block: reset dirty bitmap before reading > block: protect modification of dirty bitmaps with a mutex > block: introduce block_account_one_io > block: make accounting thread-safe > > block.c | 9 +- > block/accounting.c | 64 ++++++++------ > block/block-backend.c | 5 +- > block/dirty-bitmap.c | 112 ++++++++++++++++++++++-- > block/io.c | 51 ++++++----- > block/mirror.c | 14 ++- > block/nfs.c | 4 +- > block/qapi.c | 2 +- > block/sheepdog.c | 3 +- > block/throttle-groups.c | 91 ++++++++++++++----- > blockdev.c | 46 ++-------- > include/block/accounting.h | 8 +- > include/block/block.h | 5 +- > include/block/block_int.h | 61 ++++++++----- > include/block/dirty-bitmap.h | 25 ++++-- > include/qemu/stats64.h | 193 +++++++++++++++++++++++++++++++++++++++++ > include/sysemu/block-backend.h | 10 +-- > migration/block.c | 17 ++-- > util/Makefile.objs | 1 + > util/stats64.c | 136 +++++++++++++++++++++++++++++ > 20 files changed, 679 insertions(+), 178 deletions(-) > create mode 100644 include/qemu/stats64.h > create mode 100644 util/stats64.c > > -- > 2.12.2 > Reviewed-by: Stefan Hajnoczi