throttle: Correct access to wrong BlockBackendPublic structures
commit6bf77e1c2dc24da1bade16e8a9a637f3b127314d
authorAlberto Garcia <berto@igalia.com>
Mon, 17 Oct 2016 15:46:02 +0000 (17 18:46 +0300)
committerKevin Wolf <kwolf@redhat.com>
Mon, 24 Oct 2016 15:54:03 +0000 (24 17:54 +0200)
treeac77620a874cf822efda48467f8d2d558a72074f
parent3ac2f2f765a0bc18dfb18c38a522e6123289ffc1
throttle: Correct access to wrong BlockBackendPublic structures

In 27ccdd52598290f0f8b58be56e235aff7aebfaf3 the throttling fields were
moved from BlockDriverState to BlockBackend. However in a few cases
the code started using throttling fields from the active BlockBackend
instead of the round-robin token, making the algorithm behave
incorrectly.

This can cause starvation if there's a throttling group with several
drives but only one of them has I/O.

Cc: qemu-stable@nongnu.org
Reported-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block/throttle-groups.c