On Fri, Aug 25, 2017 at 04:20:22PM +0300, Manos Pitsidianakis wrote: > 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) > > v9: > fix suggestions by stefanha in patch 4 > add 'throttle_group_can_be_deleted' function in patch 4 > > v8: > fix suggestions by berto > > 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 | 52 ++- > 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 | 748 > ++++++++++++++++++++++++++++++---------- > 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, 1721 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 >
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>