X-Git-Url: https://git.proxmox.com/?p=pve-qemu-kvm.git;a=blobdiff_plain;f=debian%2Fpatches%2Fpve%2F0046-convert-savevm-async-to-threads.patch;h=e216979e0830999c343c03599a42a73da02868ec;hp=c1f9f338f83361cc5e70294fb66a93a6ba13f7a2;hb=87ba737b73306d6f0b9013c5419539b3fa4e9864;hpb=d2a6ab5cdb6ca8ef5f53b9b00969bd3a8d203a67 diff --git a/debian/patches/pve/0046-convert-savevm-async-to-threads.patch b/debian/patches/pve/0046-convert-savevm-async-to-threads.patch index c1f9f33..e216979 100644 --- a/debian/patches/pve/0046-convert-savevm-async-to-threads.patch +++ b/debian/patches/pve/0046-convert-savevm-async-to-threads.patch @@ -1,14 +1,14 @@ -From f255c2a02017dbefc3bcc786762b1de3c5aa5c89 Mon Sep 17 00:00:00 2001 +From 190e9321e1657ec0b956ecece21d6a037487cd14 Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Tue, 8 Nov 2016 11:13:06 +0100 -Subject: [PATCH 46/46] convert savevm-async to threads +Subject: [PATCH 46/47] convert savevm-async to threads --- - savevm-async.c | 143 +++++++++++++++++++++++++++++++++++---------------------- - 1 file changed, 88 insertions(+), 55 deletions(-) + savevm-async.c | 144 +++++++++++++++++++++++++++++++++++---------------------- + 1 file changed, 88 insertions(+), 56 deletions(-) diff --git a/savevm-async.c b/savevm-async.c -index 05b5b19..c4afc3b 100644 +index 3adf89f..9f839fa 100644 --- a/savevm-async.c +++ b/savevm-async.c @@ -48,6 +48,8 @@ static struct SnapshotState { @@ -40,7 +40,7 @@ index 05b5b19..c4afc3b 100644 } static int block_state_close(void *opaque) -@@ -156,36 +145,76 @@ static int block_state_close(void *opaque) +@@ -156,51 +145,90 @@ static int block_state_close(void *opaque) return blk_flush(snap_state.target); } @@ -129,13 +129,12 @@ index 05b5b19..c4afc3b 100644 MigrationParams params = { .blk = 0, .shared = 0 -@@ -193,14 +222,15 @@ static void process_savevm_co(void *opaque) + }; - snap_state.state = SAVE_STATE_ACTIVE; +- snap_state.state = SAVE_STATE_ACTIVE; ++ rcu_register_thread(); - qemu_mutex_unlock_iothread(); -+ rcu_register_thread(); -+ qemu_savevm_state_header(snap_state.file); ret = qemu_savevm_state_begin(snap_state.file, ¶ms); - qemu_mutex_lock_iothread(); @@ -148,7 +147,7 @@ index 05b5b19..c4afc3b 100644 } while (snap_state.state == SAVE_STATE_ACTIVE) { -@@ -209,41 +239,43 @@ static void process_savevm_co(void *opaque) +@@ -209,41 +237,43 @@ static void process_savevm_co(void *opaque) qemu_savevm_state_pending(snap_state.file, 0, &pend_nonpost, &pend_post); pending_size = pend_post + pend_nonpost; @@ -217,12 +216,13 @@ index 05b5b19..c4afc3b 100644 } static const QEMUFileOps block_file_ops = { -@@ -306,8 +338,9 @@ void qmp_savevm_start(bool has_statefile, const char *statefile, Error **errp) +@@ -306,8 +336,10 @@ void qmp_savevm_start(bool has_statefile, const char *statefile, Error **errp) error_setg(&snap_state.blocker, "block device is in use by savevm"); blk_op_block_all(snap_state.target, snap_state.blocker); - Coroutine *co = qemu_coroutine_create(process_savevm_co, NULL); - qemu_coroutine_enter(co); ++ snap_state.state = SAVE_STATE_ACTIVE; + snap_state.cleanup_bh = qemu_bh_new(process_savevm_cleanup, &snap_state); + qemu_thread_create(&snap_state.thread, "savevm-async", process_savevm_thread, + NULL, QEMU_THREAD_JOINABLE);