mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 14:53:54 -06:00
block: add aio_context field in ThrottleGroupMember
timer_cb() needs to know about the current Aio context of the throttle request that is woken up. In order to make ThrottleGroupMember backend agnostic, this information is stored in an aio_context field instead of accessing it from BlockBackend. Reviewed-by: Alberto Garcia <berto@igalia.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Manos Pitsidianakis <el13635@mail.ntua.gr> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
022cdc9f40
commit
c61791fc23
4 changed files with 69 additions and 54 deletions
|
@ -1747,18 +1747,14 @@ static AioContext *blk_aiocb_get_aio_context(BlockAIOCB *acb)
|
|||
void blk_set_aio_context(BlockBackend *blk, AioContext *new_context)
|
||||
{
|
||||
BlockDriverState *bs = blk_bs(blk);
|
||||
ThrottleTimers *tt;
|
||||
ThrottleGroupMember *tgm = &blk->public.throttle_group_member;
|
||||
|
||||
if (bs) {
|
||||
if (blk->public.throttle_group_member.throttle_state) {
|
||||
tt = &blk->public.throttle_group_member.throttle_timers;
|
||||
throttle_timers_detach_aio_context(tt);
|
||||
if (tgm->throttle_state) {
|
||||
throttle_group_detach_aio_context(tgm);
|
||||
throttle_group_attach_aio_context(tgm, new_context);
|
||||
}
|
||||
bdrv_set_aio_context(bs, new_context);
|
||||
if (blk->public.throttle_group_member.throttle_state) {
|
||||
tt = &blk->public.throttle_group_member.throttle_timers;
|
||||
throttle_timers_attach_aio_context(tt, new_context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1991,7 +1987,8 @@ void blk_io_limits_disable(BlockBackend *blk)
|
|||
void blk_io_limits_enable(BlockBackend *blk, const char *group)
|
||||
{
|
||||
assert(!blk->public.throttle_group_member.throttle_state);
|
||||
throttle_group_register_tgm(&blk->public.throttle_group_member, group);
|
||||
throttle_group_register_tgm(&blk->public.throttle_group_member,
|
||||
group, blk_get_aio_context(blk));
|
||||
}
|
||||
|
||||
void blk_io_limits_update_group(BlockBackend *blk, const char *group)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue