|
|
9bac43 |
From 6ce7177922a538b653910bde85d4f03fe2a299d7 Mon Sep 17 00:00:00 2001
|
|
|
9bac43 |
From: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
9bac43 |
Date: Wed, 3 Jan 2018 11:30:21 +0100
|
|
|
9bac43 |
Subject: [PATCH 8/9] block/throttle-groups.c: allocate RestartData on the heap
|
|
|
9bac43 |
|
|
|
9bac43 |
RH-Author: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
9bac43 |
Message-id: <20180103113021.6954-2-stefanha@redhat.com>
|
|
|
9bac43 |
Patchwork-id: 78510
|
|
|
9bac43 |
O-Subject: [RHV7.5 qemu-kvm-rhev PATCH 1/1] block/throttle-groups.c: allocate RestartData on the heap
|
|
|
9bac43 |
Bugzilla: 1525868
|
|
|
9bac43 |
RH-Acked-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
|
9bac43 |
RH-Acked-by: Fam Zheng <famz@redhat.com>
|
|
|
9bac43 |
RH-Acked-by: Jeffrey Cody <jcody@redhat.com>
|
|
|
9bac43 |
|
|
|
9bac43 |
From: Manos Pitsidianakis <el13635@mail.ntua.gr>
|
|
|
9bac43 |
|
|
|
9bac43 |
RestartData is the opaque data of the throttle_group_restart_queue_entry
|
|
|
9bac43 |
coroutine. By being stack allocated, it isn't available anymore if
|
|
|
9bac43 |
aio_co_enter schedules the coroutine with a bottom half and runs after
|
|
|
9bac43 |
throttle_group_restart_queue returns.
|
|
|
9bac43 |
|
|
|
9bac43 |
Cc: qemu-stable@nongnu.org
|
|
|
9bac43 |
Signed-off-by: Manos Pitsidianakis <el13635@mail.ntua.gr>
|
|
|
9bac43 |
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
|
9bac43 |
Reviewed-by: Alberto Garcia <berto@igalia.com>
|
|
|
9bac43 |
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
|
|
|
9bac43 |
(cherry picked from commit 43a5dc02fd6070827d5c4ff652b885219fa8cbe1)
|
|
|
9bac43 |
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
9bac43 |
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
|
9bac43 |
---
|
|
|
9bac43 |
block/throttle-groups.c | 12 +++++++-----
|
|
|
9bac43 |
1 file changed, 7 insertions(+), 5 deletions(-)
|
|
|
9bac43 |
|
|
|
9bac43 |
diff --git a/block/throttle-groups.c b/block/throttle-groups.c
|
|
|
9bac43 |
index 35c22ac..e6ba336 100644
|
|
|
9bac43 |
--- a/block/throttle-groups.c
|
|
|
9bac43 |
+++ b/block/throttle-groups.c
|
|
|
9bac43 |
@@ -387,17 +387,19 @@ static void coroutine_fn throttle_group_restart_queue_entry(void *opaque)
|
|
|
9bac43 |
schedule_next_request(tgm, is_write);
|
|
|
9bac43 |
qemu_mutex_unlock(&tg->lock);
|
|
|
9bac43 |
}
|
|
|
9bac43 |
+
|
|
|
9bac43 |
+ g_free(data);
|
|
|
9bac43 |
}
|
|
|
9bac43 |
|
|
|
9bac43 |
static void throttle_group_restart_queue(ThrottleGroupMember *tgm, bool is_write)
|
|
|
9bac43 |
{
|
|
|
9bac43 |
Coroutine *co;
|
|
|
9bac43 |
- RestartData rd = {
|
|
|
9bac43 |
- .tgm = tgm,
|
|
|
9bac43 |
- .is_write = is_write
|
|
|
9bac43 |
- };
|
|
|
9bac43 |
+ RestartData *rd = g_new0(RestartData, 1);
|
|
|
9bac43 |
+
|
|
|
9bac43 |
+ rd->tgm = tgm;
|
|
|
9bac43 |
+ rd->is_write = is_write;
|
|
|
9bac43 |
|
|
|
9bac43 |
- co = qemu_coroutine_create(throttle_group_restart_queue_entry, &rd);
|
|
|
9bac43 |
+ co = qemu_coroutine_create(throttle_group_restart_queue_entry, rd);
|
|
|
9bac43 |
aio_co_enter(tgm->aio_context, co);
|
|
|
9bac43 |
}
|
|
|
9bac43 |
|
|
|
9bac43 |
--
|
|
|
9bac43 |
1.8.3.1
|
|
|
9bac43 |
|