qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [Qemu-devel] [PATCH] block/throttle-groups.c: allocate


From: Michael Roth
Subject: Re: [Qemu-block] [Qemu-devel] [PATCH] block/throttle-groups.c: allocate RestartData on the heap
Date: Mon, 25 Sep 2017 15:51:30 -0500
User-agent: alot/0.6

Quoting Manos Pitsidianakis (2017-09-18 15:25:29)
> RestartData is the opaque data of the throttle_group_restart_queue_entry
> coroutine. By being stack allocated, it isn't available anymore if
> aio_co_enter schedules the coroutine with a bottom halve and runs after
> throttle_group_restart_queue returns.
> 
> Signed-off-by: Manos Pitsidianakis <address@hidden>

FYI: this patch has been tagged for stable 2.10.1, but is not yet
upstream. Patch freeze for 2.10.1 is September 27th.

> ---
>  block/throttle-groups.c | 12 +++++++-----
>  1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/block/throttle-groups.c b/block/throttle-groups.c
> index 6ba992c8d7..b291a88481 100644
> --- a/block/throttle-groups.c
> +++ b/block/throttle-groups.c
> @@ -403,17 +403,19 @@ static void coroutine_fn 
> throttle_group_restart_queue_entry(void *opaque)
>          schedule_next_request(tgm, is_write);
>          qemu_mutex_unlock(&tg->lock);
>      }
> +
> +    g_free(data);
>  }
> 
>  static void throttle_group_restart_queue(ThrottleGroupMember *tgm, bool 
> is_write)
>  {
>      Coroutine *co;
> -    RestartData rd = {
> -        .tgm = tgm,
> -        .is_write = is_write
> -    };
> +    RestartData *rd = g_new0(RestartData, 1);
> 
> -    co = qemu_coroutine_create(throttle_group_restart_queue_entry, &rd);
> +    rd->tgm = tgm;
> +    rd->is_write = is_write;
> +
> +    co = qemu_coroutine_create(throttle_group_restart_queue_entry, rd);
>      aio_co_enter(tgm->aio_context, co);
>  }
> 
> -- 
> 2.11.0
> 
> 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]