On Tue, May 19, 2015 at 03:24:28PM +0300, Alberto Garcia wrote: > The previous series no longer applies after all the code that was > moved to block/io.c in 61007b316c, so I rebased it. > > Other than that there are no changes. > > V8: > - Rebased against the current master. > > V7: https://lists.gnu.org/archive/html/qemu-devel/2015-04/msg01196.html > - Make block_set_io_throttle() keep a device in the same group if the > parameter is omitted, and rewrite the code a bit to make it clearer > and slightly more efficient. > > - Update the documentation of block_set_io_throttle() to explain in > detail how it works. > > - Improve the iotest 093 to test scenarios with several devices in the > same group. > > - Update version number to 2.4 in the 'Since:' fields. > > > V6: https://lists.gnu.org/archive/html/qemu-devel/2015-03/msg06036.html > - Use qemu_init_main_loop() in the throttling tests to make sure that > all BDS have an AioContext attached. > > > V5: https://lists.gnu.org/archive/html/qemu-devel/2015-03/msg05990.html > - Fixed and expanded the tests. There's a new one that checks that > configuration changes affect the whole throttling group. > > - Refactored the code a bit: new function schedule_next_request() > > - any_timer_armed is now reset in throttle_group_config(), it was > causing qemu-iotest 093 to fail. > > - Documentation improvements > > > V4: https://lists.gnu.org/archive/html/qemu-devel/2015-03/msg05558.html > - All functions from the ThrottleGroup API now receive a BlockDriverState. > > - The creation/destruction of ThrottleTimers is now handled internally. > > - bdrv_io_limits_enable() no longer accepts NULL as a valid group name. > > - No member of a group can access someone else's throttled_reqs queues > anymore. > > - No member of a group can access someone else's timers unless they > have queued requests. > > - After a timer is fired make sure that there was actually a request > in the queue, and schedule a new one otherwise. > > - Protect bdrv_swap() by locking the throttling group. > > - throttle_group_co_io_limits_intercept() is now marked as a coroutine > function. > > - Documentation updates. > > Regards, > > Berto > > Alberto Garcia (7): > throttle: Add throttle group infrastructure > throttle: Add throttle group infrastructure tests > throttle: Add throttle group support > throttle: acquire the ThrottleGroup lock in bdrv_swap() > throttle: add the name of the ThrottleGroup to BlockDeviceInfo > throttle: Update throttle infrastructure copyright > qemu-iotests: expand test 093 to support group throttling > > BenoƮt Canet (1): > throttle: Extract timers from ThrottleState into a separate structure > > block.c | 38 ++- > block/Makefile.objs | 1 + > block/io.c | 71 ++---- > block/qapi.c | 8 +- > block/throttle-groups.c | 496 > ++++++++++++++++++++++++++++++++++++++++ > blockdev.c | 38 ++- > hmp.c | 10 +- > include/block/block.h | 3 +- > include/block/block_int.h | 7 +- > include/block/throttle-groups.h | 46 ++++ > include/qemu/throttle.h | 46 ++-- > qapi/block-core.json | 29 ++- > qemu-options.hx | 1 + > qmp-commands.hx | 3 +- > tests/qemu-iotests/093 | 93 +++++--- > tests/test-throttle.c | 161 +++++++++---- > util/throttle.c | 81 ++++--- > 17 files changed, 927 insertions(+), 205 deletions(-) > create mode 100644 block/throttle-groups.c > create mode 100644 include/block/throttle-groups.h > > -- > 2.1.4 >
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
pgptObrDMWto2.pgp
Description: PGP signature