This series adds a throttle block driver filter. Currently throttling is done at the BlockBackend level. Using block driver interfaces we can move the throttling to any point in the BDS graph using a throttle node which uses the existing throttling code. This allows for potentially more complex configurations (throttling at any point in the graph, chained filters)
v7: remove anonymous groups error on missing throttle-group option on block/throttle.c change switch case format in block/throttle-groups.c (berto) v6: don't allow named group limit configuration in block/throttle.c; allow either -drive driver=throttle,file.filename=foo.qcow2, \ limits.iops-total=... or -drive driver=throttle,file.filename=foo.qcow2,throttle-group=bar fixes suggested by berto v5: fix crash in 'add aio_context field in ThrottleGroupMember' fix suggestions in block/throttle.c v4: fix suggestions in block/throttle.c fix suggestions in block/throttle_groups.c add doc note in BlockDevOptionsThrottle v3: fix style error in 'add aio_context field in ThrottleGroupMember' v2: change QOM throttle group object name print valid ranges for uint on error move frees in throttle_group_obj_finalize() split throttle_group_{set,get}() add throttle_recurse_is_first_non_filter() Manos Pitsidianakis (6): block: move ThrottleGroup membership to ThrottleGroupMember block: add aio_context field in ThrottleGroupMember block: tidy ThrottleGroupMember initializations block: convert ThrottleGroup to object with QOM block: add throttle block filter driver qemu-iotests: add 184 for throttle filter driver qapi/block-core.json | 66 +++- include/block/throttle-groups.h | 48 ++- include/qemu/throttle-options.h | 60 ++-- include/qemu/throttle.h | 3 + include/sysemu/block-backend.h | 20 +- block/block-backend.c | 62 ++-- block/qapi.c | 8 +- block/throttle-groups.c | 737 +++++++++++++++++++++++++++++----------- block/throttle.c | 250 ++++++++++++++ blockdev.c | 4 +- tests/test-throttle.c | 111 +++--- util/throttle.c | 151 ++++++++ block/Makefile.objs | 1 + tests/qemu-iotests/184 | 205 +++++++++++ tests/qemu-iotests/184.out | 300 ++++++++++++++++ tests/qemu-iotests/group | 1 + 16 files changed, 1706 insertions(+), 321 deletions(-) create mode 100644 block/throttle.c create mode 100755 tests/qemu-iotests/184 create mode 100644 tests/qemu-iotests/184.out -- 2.11.0