On Tue 24 Oct 2017 05:33:51 AM CEST, sochin jiang wrote: > --- a/block/throttle-groups.c > +++ b/block/throttle-groups.c > @@ -576,7 +576,9 @@ void throttle_group_unregister_tgm(ThrottleGroupMember > *tgm) > > /* remove the current tgm from the list */ > QLIST_REMOVE(tgm, round_robin); > - throttle_timers_destroy(&tgm->throttle_timers); > + if (throttle_timers_are_initialized(&tgm->throttle_timers)) { > + throttle_timers_destroy(&tgm->throttle_timers); > + } > qemu_mutex_unlock(&tg->lock); > > throttle_group_unref(&tg->ts);
I don't know what the rest of the people think, but I'm not completely convinced that it's a good idea to have an active ThrottleState inside a ThrottleGroupMember without timers. Perhaps in blk_remove_bs() after detaching the AioContext from the BDS we can attach the default one (what you would get with blk_get_aio_context()). On the other hand I think that Manos's series to remove the legacy throttling code gets rid of BlockBackend.ThrottleGroupMember completely. Berto