On 2018-06-08 17:15, Alberto Garcia wrote: > The throttle block filter can be reopened, and with this it is > possible to change the throttle group that the filter belongs to. > > The way the code does that is the following: > > - On throttle_reopen_prepare(): create a new ThrottleGroupMember > and attach it to the new throttle group. > > - On throttle_reopen_commit(): detach the old ThrottleGroupMember, > delete it and replace it with the new one. > > The problem with this is that by replacing the ThrottleGroupMember the > previous value of io_limits_disabled is lost, causing an assertion > failure in throttle_co_drain_end(). > > This problem can be reproduced by reopening a throttle node: > > $QEMU -monitor stdio > -object throttle-group,id=tg0,x-iops-total=1000 \ > -blockdev > node-name=hd0,driver=qcow2,file.driver=file,file.filename=hd.qcow2 \ > -blockdev > node-name=root,driver=throttle,throttle-group=tg0,file=hd0,read-only=on > > (qemu) block_stream root > block/throttle.c:214: throttle_co_drain_end: Assertion > `tgm->io_limits_disabled' failed. > > Since we only want to change the throttle group on reopen there's no > need to create a ThrottleGroupMember and discard the old one. It's > easier if we simply detach it from its current group and attach it to > the new one. > > Signed-off-by: Alberto Garcia <[email protected]> > --- > block/throttle.c | 54 +++++++++++++++++++++++++++++++++--------------------- > 1 file changed, 33 insertions(+), 21 deletions(-)
Thanks, applied to my block branch: https://git.xanclic.moe/XanClic/qemu/commits/branch/block Max
signature.asc
Description: OpenPGP digital signature
