# also update debian/changelog
KVMVER=2.9.0
-KVMPKGREL=1~rc2+5
+KVMPKGREL=1~rc3
KVMPACKAGE = pve-qemu-kvm
KVMSRC = qemu
+pve-qemu-kvm (2.9.0-1~rc3) unstable; urgency=medium
+
+ * update to 2.9.0-rc3
+
+ * merge: block: Ignore guest dev permissions during incoming migration
+ to fix live migration with local disks
+
+ -- Proxmox Support Team <support@proxmox.com> Wed, 05 Apr 2017 11:50:46 +0200
+
pve-qemu-kvm (2.9.0-1~rc2+5) unstable; urgency=medium
* fix a crash caused by the zeroinit filter in drive-mirror
--- /dev/null
+From qemu-devel-bounces+w.bumiller=proxmox.com@nongnu.org Wed Apr 5 08:57:05 2017
+Return-Path: <qemu-devel-bounces+w.bumiller=proxmox.com@nongnu.org>
+Received: from ronja.mits.lan (localhost [127.0.0.1]) by ronja (Cyrus v2.4.16-Debian-2.4.16-4.32.201410011447) with LMTPA; Tue, 04 Apr 2017 17:40:54 +0200
+X-Sieve: CMU Sieve 2.4
+Received: from proxmox.maurer-it.com (mail.proxmox.com [192.168.2.110]) by ronja.mits.lan (Postfix) with ESMTPS id 666CAF61213 for <w.bumiller@proxmox.com>; Tue, 4 Apr 2017 17:40:54 +0200 (CEST)
+Received: from proxmox.maurer-it.com (localhost [127.0.0.1]) by proxmox.maurer-it.com (Proxmox) with ESMTP id 9655510C7994 for <w.bumiller@proxmox.com>; Tue, 4 Apr 2017 17:40:54 +0200 (CEST)
+Received-SPF: pass (nongnu.org ... gnu.org: 208.118.235.17 is authorized to use 'qemu-devel-bounces@nongnu.org' in 'mfrom' identity (mechanism 'ip4:208.118.235.0/24' matched)) receiver=proxmox.maurer-it.com; identity=mailfrom; envelope-from="qemu-devel-bounces@nongnu.org"; helo=lists.gnu.org; client-ip=208.118.235.17
+Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by proxmox.maurer-it.com (Proxmox) with ESMTPS id DDC8A110E4A3 for <w.bumiller@proxmox.com>; Tue, 4 Apr 2017 17:40:51 +0200 (CEST)
+Received: from localhost ([::1]:36303 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <qemu-devel-bounces+w.bumiller=proxmox.com@nongnu.org>) id 1cvQZd-0001pP-Un for w.bumiller@proxmox.com; Tue, 04 Apr 2017 11:40:50 -0400
+Received: from eggs.gnu.org ([2001:4830:134:3::10]:50974) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from <kwolf@redhat.com>) id 1cvQVK-0006YZ-Kd for qemu-devel@nongnu.org; Tue, 04 Apr 2017 11:36:24 -0400
+Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from <kwolf@redhat.com>) id 1cvQVI-0007lq-5E for qemu-devel@nongnu.org; Tue, 04 Apr 2017 11:36:22 -0400
+Received: from mx1.redhat.com ([209.132.183.28]:39314) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from <kwolf@redhat.com>) id 1cvQVC-0007bj-0p; Tue, 04 Apr 2017 11:36:14 -0400
+Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id CDFA6C05678E; Tue, 4 Apr 2017 15:36:12 +0000 (UTC)
+DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com CDFA6C05678E
+Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
+Authentication-Results: ext-mx08.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=kwolf@redhat.com
+DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com CDFA6C05678E
+Received: from noname.str.redhat.com (dhcp-192-175.str.redhat.com [10.33.192.175]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9EEA19F34F; Tue, 4 Apr 2017 15:36:01 +0000 (UTC)
+From: Kevin Wolf <kwolf@redhat.com>
+To: qemu-block@nongnu.org
+Date: Tue, 4 Apr 2017 17:35:56 +0200
+Message-Id: <1491320156-4629-1-git-send-email-kwolf@redhat.com>
+X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12
+X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.32]); Tue, 04 Apr 2017 15:36:13 +0000 (UTC)
+X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy]
+X-Received-From: 209.132.183.28
+Subject: [Qemu-devel] [RFC PATCH for-2.9] block: Ignore guest dev permissions during incoming migration
+X-BeenThere: qemu-devel@nongnu.org
+X-Mailman-Version: 2.1.21
+Precedence: list
+List-Id: <qemu-devel.nongnu.org>
+List-Unsubscribe: <https://lists.nongnu.org/mailman/options/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>
+List-Archive: <http://lists.nongnu.org/archive/html/qemu-devel/>
+List-Post: <mailto:qemu-devel@nongnu.org>
+List-Help: <mailto:qemu-devel-request@nongnu.org?subject=help>
+List-Subscribe: <https://lists.nongnu.org/mailman/listinfo/qemu-devel>, <mailto:qemu-devel-request@nongnu.org?subject=subscribe>
+Cc: kwolf@redhat.com, armband@enea.com, jcody@redhat.com, Ciprian.Barbu@enea.com, qemu-devel@nongnu.org, mreitz@redhat.com, Alexandru.Avadanii@enea.com, pbonzini@redhat.com
+Errors-To: qemu-devel-bounces+w.bumiller=proxmox.com@nongnu.org
+Sender: "Qemu-devel" <qemu-devel-bounces+w.bumiller=proxmox.com@nongnu.org>
+X-Proxmox-CTCH-Refid: str=0001.0A0C0201.58E3BE85.00B9:SCFSTAT37688011,ss=1,re=-4.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0
+x-proxmoxspam-level: Spam detection results: 0 AWL 0.002 Adjusted score from AWL reputation of From: address HEADER_FROM_DIFFERENT_DOMAINS 0.001 From and EnvelopeFrom 2nd level mail domains are different RCVD_IN_DNSWL_HI -5 Sender listed at http://www.dnswl.org/, high trust RCVD_IN_MSPIKE_H3 -0.01 Good reputation (+3) RCVD_IN_MSPIKE_WL -0.01 Mailspike good senders SPF_PASS -0.001 SPF: sender matches SPF record
+X-TUID: mR1+KkAcSCza
+
+Usually guest devices don't like other writers to the same image, so
+they use blk_set_perm() to prevent this from happening. In the migration
+phase before the VM is actually running, though, they don't have a
+problem with writes to the image. On the other hand, storage migration
+needs to be able to write to the image in this phase, so the restrictive
+blk_set_perm() call of qdev devices breaks it.
+
+This patch flags all BlockBackends with a qdev device as
+blk->disable_perm during incoming migration, which means that the
+requested permissions are stored in the BlockBackend, but not actually
+applied to its root node yet.
+
+Once migration has finished and the VM should be resumed, the
+permissions are applied. If they cannot be applied (e.g. because the NBD
+server used for block migration hasn't been shut down), resuming the VM
+fails.
+
+Signed-off-by: Kevin Wolf <kwolf@redhat.com>
+---
+ block/block-backend.c | 40 +++++++++++++++++++++++++++++++++++++++-
+ include/block/block.h | 2 ++
+ migration/migration.c | 8 ++++++++
+ qmp.c | 6 ++++++
+ 4 files changed, 55 insertions(+), 1 deletion(-)
+
+diff --git a/block/block-backend.c b/block/block-backend.c
+index 0b63773..f817040 100644
+--- a/block/block-backend.c
++++ b/block/block-backend.c
+@@ -61,6 +61,7 @@ struct BlockBackend {
+
+ uint64_t perm;
+ uint64_t shared_perm;
++ bool disable_perm;
+
+ bool allow_write_beyond_eof;
+
+@@ -578,7 +579,7 @@ int blk_set_perm(BlockBackend *blk, uint64_t perm, uint64_t shared_perm,
+ {
+ int ret;
+
+- if (blk->root) {
++ if (blk->root && !blk->disable_perm) {
+ ret = bdrv_child_try_set_perm(blk->root, perm, shared_perm, errp);
+ if (ret < 0) {
+ return ret;
+@@ -597,15 +598,52 @@ void blk_get_perm(BlockBackend *blk, uint64_t *perm, uint64_t *shared_perm)
+ *shared_perm = blk->shared_perm;
+ }
+
++/*
++ * Notifies the user of all BlockBackends that migration has completed. qdev
++ * devices can tighten their permissions in response (specifically revoke
++ * shared write permissions that we needed for storage migration).
++ *
++ * If an error is returned, the VM cannot be allowed to be resumed.
++ */
++void blk_resume_after_migration(Error **errp)
++{
++ BlockBackend *blk;
++ Error *local_err = NULL;
++
++ for (blk = blk_next(NULL); blk; blk = blk_next(blk)) {
++ if (!blk->disable_perm) {
++ continue;
++ }
++
++ blk->disable_perm = false;
++
++ blk_set_perm(blk, blk->perm, blk->shared_perm, &local_err);
++ if (local_err) {
++ error_propagate(errp, local_err);
++ blk->disable_perm = true;
++ return;
++ }
++ }
++}
++
+ static int blk_do_attach_dev(BlockBackend *blk, void *dev)
+ {
+ if (blk->dev) {
+ return -EBUSY;
+ }
++
++ /* While migration is still incoming, we don't need to apply the
++ * permissions of guest device BlockBackends. We might still have a block
++ * job or NBD server writing to the image for storage migration. */
++ if (runstate_check(RUN_STATE_INMIGRATE)) {
++ blk->disable_perm = true;
++ }
++
+ blk_ref(blk);
+ blk->dev = dev;
+ blk->legacy_dev = false;
+ blk_iostatus_reset(blk);
++
+ return 0;
+ }
+
+diff --git a/include/block/block.h b/include/block/block.h
+index 5149260..3e09222 100644
+--- a/include/block/block.h
++++ b/include/block/block.h
+@@ -366,6 +366,8 @@ void bdrv_invalidate_cache(BlockDriverState *bs, Error **errp);
+ void bdrv_invalidate_cache_all(Error **errp);
+ int bdrv_inactivate_all(void);
+
++void blk_resume_after_migration(Error **errp);
++
+ /* Ensure contents are flushed to disk. */
+ int bdrv_flush(BlockDriverState *bs);
+ int coroutine_fn bdrv_co_flush(BlockDriverState *bs);
+diff --git a/migration/migration.c b/migration/migration.c
+index 54060f7..ad4036f 100644
+--- a/migration/migration.c
++++ b/migration/migration.c
+@@ -349,6 +349,14 @@ static void process_incoming_migration_bh(void *opaque)
+ exit(EXIT_FAILURE);
+ }
+
++ /* If we get an error here, just don't restart the VM yet. */
++ blk_resume_after_migration(&local_err);
++ if (local_err) {
++ error_free(local_err);
++ local_err = NULL;
++ autostart = false;
++ }
++
+ /*
+ * This must happen after all error conditions are dealt with and
+ * we're sure the VM is going to be running on this host.
+diff --git a/qmp.c b/qmp.c
+index fa82b59..a744e44 100644
+--- a/qmp.c
++++ b/qmp.c
+@@ -207,6 +207,12 @@ void qmp_cont(Error **errp)
+ }
+ }
+
++ blk_resume_after_migration(&local_err);
++ if (local_err) {
++ error_propagate(errp, local_err);
++ return;
++ }
++
+ if (runstate_check(RUN_STATE_INMIGRATE)) {
+ autostart = 1;
+ } else {
+--
+1.8.3.1
+
+
+
-From 45b6688a45611bb5818e1b6aa7313c91797aa003 Mon Sep 17 00:00:00 2001
+From 31ccb49bbea094f80dfbcbc664dfcf2b8060231d Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:15:49 +0100
-Subject: [PATCH 01/48] fr-ca keymap corrections
+Subject: [PATCH 01/49] fr-ca keymap corrections
---
pc-bios/keymaps/fr-ca | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/pc-bios/keymaps/fr-ca b/pc-bios/keymaps/fr-ca
-index b645208..9291240 100644
+index b645208e42..92912409e1 100644
--- a/pc-bios/keymaps/fr-ca
+++ b/pc-bios/keymaps/fr-ca
@@ -14,22 +14,31 @@ bar 0x29 shift
dead_grave 0x28
dead_circumflex 0x1a
--
-2.1.4
+2.11.0
-From 392fb50a1c43b47acffb1073a458703da93dfdd8 Mon Sep 17 00:00:00 2001
+From 7e59abba53119cd5b842b8be922a18c8dc73d1cc Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:16:49 +0100
-Subject: [PATCH 02/48] Adjust network script path to /etc/kvm/
+Subject: [PATCH 02/49] Adjust network script path to /etc/kvm/
---
include/net/net.h | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/include/net/net.h b/include/net/net.h
-index 99b28d5..40c39f0 100644
+index 99b28d5b38..40c39f00e6 100644
--- a/include/net/net.h
+++ b/include/net/net.h
@@ -214,8 +214,9 @@ void qmp_netdev_add(QDict *qdict, QObject **ret, Error **errp);
#define DEFAULT_BRIDGE_INTERFACE "br0"
--
-2.1.4
+2.11.0
-From f3e33fe70da6f9361bd940d2b029d293a71408ca Mon Sep 17 00:00:00 2001
+From 0e487cf7a98f230b99f8ffa349e22be23478aa5c Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:17:38 +0100
-Subject: [PATCH 03/48] vnc: altgr emulation
+Subject: [PATCH 03/49] vnc: altgr emulation
---
ui/vnc.c | 26 +++++++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/ui/vnc.c b/ui/vnc.c
-index 821acdd..29575f8 100644
+index 349cfc9d86..9c8ab42eea 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
-@@ -1625,6 +1625,10 @@ static void kbd_leds(void *opaque, int ledstate)
+@@ -1631,6 +1631,10 @@ static void kbd_leds(void *opaque, int ledstate)
static void do_key_event(VncState *vs, int down, int keycode, int sym)
{
/* QEMU console switch */
switch(keycode) {
case 0x2a: /* Left Shift */
-@@ -1705,8 +1709,27 @@ static void do_key_event(VncState *vs, int down, int keycode, int sym)
+@@ -1711,8 +1715,27 @@ static void do_key_event(VncState *vs, int down, int keycode, int sym)
}
if (qemu_console_is_graphic(NULL)) {
} else {
bool numlock = vs->modifiers_state[0x45];
bool control = (vs->modifiers_state[0x1d] ||
-@@ -1846,7 +1869,8 @@ static void key_event(VncState *vs, int down, uint32_t sym)
+@@ -1852,7 +1875,8 @@ static void key_event(VncState *vs, int down, uint32_t sym)
lsym = lsym - 'A' + 'a';
}
do_key_event(vs, down, keycode, sym);
}
--
-2.1.4
+2.11.0
-From adea2808e62d32a9b22bbe3d16c84c92289983a8 Mon Sep 17 00:00:00 2001
+From 0cc4bc86d6a81121a53b1dc691e62c3d47d0aa88 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:18:46 +0100
-Subject: [PATCH 04/48] qemu-img: return success on info without snapshots
+Subject: [PATCH 04/49] qemu-img: return success on info without snapshots
---
qemu-img.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/qemu-img.c b/qemu-img.c
-index b220cf7..4f7f458 100644
+index b220cf71d7..4f7f458dd2 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -2596,7 +2596,8 @@ static int img_info(int argc, char **argv)
switch (output_format) {
--
-2.1.4
+2.11.0
-From bd3aa97864804b5b37421f199b9fe64e3b16b52c Mon Sep 17 00:00:00 2001
+From 72c5264d057a0605448bc9e1b20ee2f94022e7fc Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:27:05 +0100
-Subject: [PATCH 05/48] use kvm by default
+Subject: [PATCH 05/49] use kvm by default
---
accel.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/accel.c b/accel.c
-index 664bb88..ddb23a3 100644
+index 664bb88422..ddb23a3f1d 100644
--- a/accel.c
+++ b/accel.c
@@ -87,8 +87,8 @@ void configure_accelerator(MachineState *ms)
while (!accel_initialised && *p != '\0') {
--
-2.1.4
+2.11.0
-From 5921bc0360f6964a5bb5355c2707c806425f4734 Mon Sep 17 00:00:00 2001
+From 7f13e74387d932b773fd6bcd33c1a5be99a3d89c Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:27:49 +0100
-Subject: [PATCH 06/48] virtio-balloon: fix query
+Subject: [PATCH 06/49] virtio-balloon: fix query
Actually provide memory information via the query-balloon
command.
3 files changed, 81 insertions(+), 5 deletions(-)
diff --git a/hmp.c b/hmp.c
-index edb8970..904542d 100644
+index edb8970461..904542d026 100644
--- a/hmp.c
+++ b/hmp.c
@@ -723,7 +723,35 @@ void hmp_info_balloon(Monitor *mon, const QDict *qdict)
qapi_free_BalloonInfo(info);
}
diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c
-index a705e0e..158e13e 100644
+index a705e0ec55..158e13e795 100644
--- a/hw/virtio/virtio-balloon.c
+++ b/hw/virtio/virtio-balloon.c
@@ -379,8 +379,37 @@ static uint64_t virtio_balloon_get_features(VirtIODevice *vdev, uint64_t f,
static void virtio_balloon_to_target(void *opaque, ram_addr_t target)
diff --git a/qapi-schema.json b/qapi-schema.json
-index b921994..e7a8117 100644
+index 250e4dc49b..f38b85bf6a 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1900,10 +1900,29 @@
##
# @query-balloon:
--
-2.1.4
+2.11.0
-From bc04d6e5e09d517a9c8833fd407a655be3cf21fe Mon Sep 17 00:00:00 2001
+From 4e5f2bdc825f1201c8b701d5c20939f9743db0ea Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:30:21 +0100
-Subject: [PATCH 07/48] set the CPU model to kvm64/32 instead of qemu64/32
+Subject: [PATCH 07/49] set the CPU model to kvm64/32 instead of qemu64/32
---
hw/i386/pc.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
-index d24388e..81e91a4 100644
+index d24388e05f..81e91a4897 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1151,9 +1151,9 @@ void pc_cpus_init(PCMachineState *pcms)
}
--
-2.1.4
+2.11.0
-From e453e9a98f7f0c2a213fe5bee04ece37ce10e625 Mon Sep 17 00:00:00 2001
+From c9a0fe8f730979dccf506fd3563896b84ec54299 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:31:18 +0100
-Subject: [PATCH 08/48] qapi: modify query machines
+Subject: [PATCH 08/49] qapi: modify query machines
provide '*is-current' in MachineInfo struct
---
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/qapi-schema.json b/qapi-schema.json
-index e7a8117..2c40928 100644
+index f38b85bf6a..51e150c6c1 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
-@@ -4245,6 +4245,8 @@
+@@ -4242,6 +4242,8 @@
#
# @is-default: whether the machine is default
#
# @cpu-max: maximum number of CPUs supported by the machine type
# (since 1.5.0)
#
-@@ -4254,7 +4256,7 @@
+@@ -4251,7 +4253,7 @@
##
{ 'struct': 'MachineInfo',
'data': { 'name': 'str', '*alias': 'str',
##
diff --git a/vl.c b/vl.c
-index 0b4ed52..868c489 100644
+index 0b4ed5241c..868c4893df 100644
--- a/vl.c
+++ b/vl.c
@@ -1518,6 +1518,11 @@ MachineInfoList *qmp_query_machines(Error **errp)
entry->value = info;
entry->next = mach_list;
--
-2.1.4
+2.11.0
-From c51f39a5741210b7df2ac212a8ced14ef950d415 Mon Sep 17 00:00:00 2001
+From 275d91b95acd8518560087dbdc641df5679519e2 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:32:11 +0100
-Subject: [PATCH 09/48] qapi: modify spice query
+Subject: [PATCH 09/49] qapi: modify spice query
Provide the last ticket in the SpiceInfo struct optionally.
---
2 files changed, 8 insertions(+)
diff --git a/qapi-schema.json b/qapi-schema.json
-index 2c40928..ca534cc 100644
+index 51e150c6c1..1b14ff2476 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -1841,11 +1841,14 @@
##
diff --git a/ui/spice-core.c b/ui/spice-core.c
-index 804abc5..4a41731 100644
+index 804abc5c0f..4a417310d3 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -552,6 +552,11 @@ SpiceInfo *qmp_query_spice(Error **errp)
info->has_port = true;
info->port = port;
--
-2.1.4
+2.11.0
-From 1434b9fad738e852f789cd8b951f2f4e1e08d3e5 Mon Sep 17 00:00:00 2001
+From eabdbcd58c6e21cc19a6edbd7122b660d3f0263b Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:33:34 +0100
-Subject: [PATCH 10/48] ui/spice: default to pve certs unless otherwise
+Subject: [PATCH 10/49] ui/spice: default to pve certs unless otherwise
specified
---
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/ui/spice-core.c b/ui/spice-core.c
-index 4a41731..af1dc8c 100644
+index 4a417310d3..af1dc8c653 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -685,32 +685,35 @@ void qemu_spice_init(void)
x509_key_password = qemu_opt_get(opts, "x509-key-password");
--
-2.1.4
+2.11.0
-From c1338b34ccac2c5e6d7d1aca3ca3e3457a3f744c Mon Sep 17 00:00:00 2001
+From 5a684e9eb57192f1b772a6d7dae67857d72fae41 Mon Sep 17 00:00:00 2001
From: Dietmar Maurer <dietmar@proxmox.com>
Date: Tue, 13 Nov 2012 11:11:38 +0100
-Subject: [PATCH 11/48] introduce new vma archive format
+Subject: [PATCH 11/49] introduce new vma archive format
This is a very simple archive format, see docs/specs/vma_spec.txt
create mode 100644 vma.h
diff --git a/Makefile b/Makefile
-index 6c359b2..edbc8b5 100644
+index 6c359b2f86..edbc8b50f0 100644
--- a/Makefile
+++ b/Makefile
@@ -284,7 +284,7 @@ ifneq ($(wildcard config-host.mak),)
qemu-bridge-helper$(EXESUF): qemu-bridge-helper.o $(COMMON_LDADDS)
diff --git a/Makefile.objs b/Makefile.objs
-index 6167e7b..9b12ee6 100644
+index 6167e7b17d..9b12ee6afa 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -14,6 +14,7 @@ block-obj-y += block.o blockjob.o
diff --git a/vma-reader.c b/vma-reader.c
new file mode 100644
-index 0000000..51dd8fe
+index 0000000000..51dd8fee0e
--- /dev/null
+++ b/vma-reader.c
@@ -0,0 +1,797 @@
+
diff --git a/vma-writer.c b/vma-writer.c
new file mode 100644
-index 0000000..b0cf529
+index 0000000000..b0cf529125
--- /dev/null
+++ b/vma-writer.c
@@ -0,0 +1,870 @@
+}
diff --git a/vma.c b/vma.c
new file mode 100644
-index 0000000..8732bfa
+index 0000000000..8732bfa85e
--- /dev/null
+++ b/vma.c
@@ -0,0 +1,586 @@
+}
diff --git a/vma.h b/vma.h
new file mode 100644
-index 0000000..6625eb9
+index 0000000000..6625eb95c6
--- /dev/null
+++ b/vma.h
@@ -0,0 +1,146 @@
+
+#endif /* BACKUP_VMA_H */
--
-2.1.4
+2.11.0
-From f6a9d9269a4f07eb7b2161884dde52a65f58c9f6 Mon Sep 17 00:00:00 2001
+From 93dc98fc5744c6f61ba74d0196d525190eee997b Mon Sep 17 00:00:00 2001
From: Dietmar Maurer <dietmar@proxmox.com>
Date: Mon, 11 Mar 2013 07:07:46 +0100
-Subject: [PATCH 12/48] vma: add verify command
+Subject: [PATCH 12/49] vma: add verify command
Users wants to verify the archive after backup.
3 files changed, 147 insertions(+), 30 deletions(-)
diff --git a/vma-reader.c b/vma-reader.c
-index 51dd8fe..2aafb26 100644
+index 51dd8fee0e..2aafb26b2a 100644
--- a/vma-reader.c
+++ b/vma-reader.c
@@ -45,6 +45,8 @@ struct VmaReader {
+}
+
diff --git a/vma.c b/vma.c
-index 8732bfa..ab7b766 100644
+index 8732bfa85e..ab7b766014 100644
--- a/vma.c
+++ b/vma.c
@@ -29,6 +29,7 @@ static void help(void)
help();
diff --git a/vma.h b/vma.h
-index 6625eb9..9bb6ea4 100644
+index 6625eb95c6..9bb6ea4f69 100644
--- a/vma.h
+++ b/vma.h
@@ -142,5 +142,6 @@ int vma_reader_register_bs(VmaReader *vmar, guint8 dev_id,
#endif /* BACKUP_VMA_H */
--
-2.1.4
+2.11.0
-From cfc9d20b832a3db40b4e61fa6af0fbcda911ec2e Mon Sep 17 00:00:00 2001
+From abbfe2dd5318356fd422ec84c3088a94ea528943 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 14:46:49 +0100
-Subject: [PATCH 13/48] vma: add 'config' command to dump the config
+Subject: [PATCH 13/49] vma: add 'config' command to dump the config
---
vma.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 64 insertions(+)
diff --git a/vma.c b/vma.c
-index ab7b766..8925407 100644
+index ab7b766014..89254070c4 100644
--- a/vma.c
+++ b/vma.c
@@ -27,6 +27,7 @@ static void help(void)
help();
--
-2.1.4
+2.11.0
-From c46139b295f9edffd43a12e7f029fce4f9b2ea46 Mon Sep 17 00:00:00 2001
+From 4291b03feee4f973686d67dc6e45ecd1ff374379 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 15:04:57 +0100
-Subject: [PATCH 14/48] backup: modify job api
+Subject: [PATCH 14/49] backup: modify job api
Introduces a BackupDump function callback and a pause_count
for backup_start. For a dump-backup the target parameter
4 files changed, 83 insertions(+), 47 deletions(-)
diff --git a/block/backup.c b/block/backup.c
-index a4fb288..fe4ce7f 100644
+index a4fb2884f9..fe4ce7f504 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -36,6 +36,7 @@ typedef struct BackupBlockJob {
block_job_txn_add_job(txn, &job->common);
diff --git a/block/replication.c b/block/replication.c
-index bf3c395..60c6524 100644
+index bf3c395eb4..60c6524417 100644
--- a/block/replication.c
+++ b/block/replication.c
@@ -531,7 +531,8 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
error_propagate(errp, local_err);
backup_job_cleanup(bs);
diff --git a/blockdev.c b/blockdev.c
-index 040c152..bb3fc5b 100644
+index 040c152512..bb3fc5bd43 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3273,7 +3273,7 @@ static BlockJob *do_drive_backup(DriveBackup *backup, BlockJobTxn *txn,
error_propagate(errp, local_err);
}
diff --git a/include/block/block_int.h b/include/block/block_int.h
-index 59400bd..ec65581 100644
+index 59400bd848..ec655815ca 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -59,6 +59,9 @@
void hmp_drive_add_node(Monitor *mon, const char *optstr);
--
-2.1.4
+2.11.0
-From d48092bb9901112b3356aa8d461c45ffb4ec2b9a Mon Sep 17 00:00:00 2001
+From 678834d6358b6d784f7ae7b6df3476c4befa2073 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 15:20:56 +0100
-Subject: [PATCH 15/48] backup: add pve monitor commands
+Subject: [PATCH 15/49] backup: add pve monitor commands
---
blockdev.c | 465 ++++++++++++++++++++++++++++++++++++++++++++++
8 files changed, 668 insertions(+), 6 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index bb3fc5b..3e5c9ce 100644
+index bb3fc5bd43..3e5c9ce593 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -35,6 +35,7 @@
bool has_base, const char *base,
bool has_base_node, const char *base_node,
diff --git a/blockjob.c b/blockjob.c
-index 9b619f385..54bd34a 100644
+index 9b619f385a..54bd34a7db 100644
--- a/blockjob.c
+++ b/blockjob.c
@@ -37,8 +37,8 @@
if (block_job_is_internal(job)) {
return;
diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
-index a53f105..1a18380 100644
+index a53f105c52..1a1838099f 100644
--- a/hmp-commands-info.hx
+++ b/hmp-commands-info.hx
@@ -487,6 +487,19 @@ STEXI
{
.name = "usernet",
diff --git a/hmp-commands.hx b/hmp-commands.hx
-index 8819281..aea39d0 100644
+index 88192817b2..aea39d0f45 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -87,6 +87,35 @@ STEXI
.name = "block_job_set_speed",
.args_type = "device:B,speed:o",
diff --git a/hmp.c b/hmp.c
-index 904542d..c685ba5 100644
+index 904542d026..c685ba507f 100644
--- a/hmp.c
+++ b/hmp.c
@@ -151,6 +151,44 @@ void hmp_info_mice(Monitor *mon, const QDict *qdict)
{
Error *error = NULL;
diff --git a/hmp.h b/hmp.h
-index 799fd37..17a65b2 100644
+index 799fd371fa..17a65b2313 100644
--- a/hmp.h
+++ b/hmp.h
@@ -30,6 +30,7 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict);
void hmp_block_job_cancel(Monitor *mon, const QDict *qdict);
void hmp_block_job_pause(Monitor *mon, const QDict *qdict);
diff --git a/include/block/block_int.h b/include/block/block_int.h
-index ec65581..278da16 100644
+index ec655815ca..278da161fb 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -59,7 +59,7 @@
enum BdrvTrackedRequestType {
diff --git a/qapi-schema.json b/qapi-schema.json
-index ca534cc..059cbfc 100644
+index 1b14ff2476..12d4d20705 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -570,6 +570,96 @@
#
# Detailed migration status.
--
-2.1.4
+2.11.0
-From 99a526d92531d64ff0c31a83d0d55f38651a32a5 Mon Sep 17 00:00:00 2001
+From 670436d594b195b66d707c7554ca18ce46ecbca7 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 15:21:54 +0100
-Subject: [PATCH 16/48] backup: vma: add dir format
+Subject: [PATCH 16/49] backup: vma: add dir format
---
blockdev.c | 137 ++++++++++++++++++++++++++++++++++++++++---------------
5 files changed, 111 insertions(+), 42 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index 3e5c9ce..af1b9d4 100644
+index 3e5c9ce593..af1b9d4817 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3007,6 +3007,8 @@ typedef struct PVEBackupDevInfo {
}
diff --git a/hmp-commands.hx b/hmp-commands.hx
-index aea39d0..7288203 100644
+index aea39d0f45..72882039ee 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -89,9 +89,11 @@ ETEXI
},
diff --git a/hmp.c b/hmp.c
-index c685ba5..465d7fa 100644
+index c685ba507f..465d7faad0 100644
--- a/hmp.c
+++ b/hmp.c
@@ -1664,11 +1664,13 @@ void hmp_backup(Monitor *mon, const QDict *qdict)
hmp_handle_error(mon, &error);
diff --git a/qapi-schema.json b/qapi-schema.json
-index 059cbfc..1127f2c 100644
+index 12d4d20705..edb7c32ac9 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -609,7 +609,7 @@
##
# @backup:
diff --git a/vma.c b/vma.c
-index 8925407..1ffaced 100644
+index 89254070c4..1ffaced897 100644
--- a/vma.c
+++ b/vma.c
@@ -264,7 +264,7 @@ static int extract_content(int argc, char **argv)
if (readmap) {
--
-2.1.4
+2.11.0
-From f859377de12e2faa46046b266ce4418c138e61ab Mon Sep 17 00:00:00 2001
+From d28171e9e64cad9bb04dd68ef694126caab53154 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 15:22:19 +0100
-Subject: [PATCH 17/48] backup: do not return errors in dump callback
+Subject: [PATCH 17/49] backup: do not return errors in dump callback
---
blockdev.c | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index af1b9d4..4b073d4 100644
+index af1b9d4817..4b073d4d9f 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3019,6 +3019,11 @@ static int pvebackup_dump_cb(void *opaque, BlockBackend *target,
}
}
--
-2.1.4
+2.11.0
-From 17b2fc7ed399325558b891e13e104214568fd154 Mon Sep 17 00:00:00 2001
+From 0dad6b49846e109e3acdb1fa7e69081af20e5bcd Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 15:39:36 +0100
-Subject: [PATCH 18/48] backup: vma: correctly propagate error
+Subject: [PATCH 18/49] backup: vma: correctly propagate error
---
blockdev.c | 2 +-
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/blockdev.c b/blockdev.c
-index 4b073d4..6253ef1 100644
+index 4b073d4d9f..6253ef1c5e 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3043,7 +3043,7 @@ static int pvebackup_dump_cb(void *opaque, BlockBackend *target,
if (di->bs && di->bs->job) {
block_job_cancel(di->bs->job);
diff --git a/vma-writer.c b/vma-writer.c
-index b0cf529..689e988 100644
+index b0cf529125..689e988423 100644
--- a/vma-writer.c
+++ b/vma-writer.c
@@ -792,6 +792,13 @@ vma_writer_write(VmaWriter *vmaw, uint8_t dev_id, int64_t cluster_num,
{
g_assert(vmaw != NULL);
diff --git a/vma.h b/vma.h
-index 9bb6ea4..98377e4 100644
+index 9bb6ea4f69..98377e473e 100644
--- a/vma.h
+++ b/vma.h
@@ -116,6 +116,7 @@ typedef struct VmaDeviceInfo {
int vma_writer_add_config(VmaWriter *vmaw, const char *name, gpointer data,
size_t len);
--
-2.1.4
+2.11.0
-From bf0b444a62df49c016eb47f0299e5656d830234e Mon Sep 17 00:00:00 2001
+From 89c76cee2e39bd1e1a7b560b0a3eb5e83fa2bae8 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 15:40:00 +0100
-Subject: [PATCH 19/48] backup: vma: remove async queue
+Subject: [PATCH 19/49] backup: vma: remove async queue
---
blockdev.c | 6 ++
2 files changed, 38 insertions(+), 147 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index 6253ef1..ef159b0 100644
+index 6253ef1c5e..ef159b0753 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3122,6 +3122,11 @@ static void pvebackup_cancel(void *opaque)
}
}
diff --git a/vma-writer.c b/vma-writer.c
-index 689e988..ec8da53 100644
+index 689e988423..ec8da5378d 100644
--- a/vma-writer.c
+++ b/vma-writer.c
@@ -28,14 +28,8 @@
g_free(vmaw);
}
--
-2.1.4
+2.11.0
-From c0b66c21bb4d4cc1f02d4259d62dd8d6d413fd7f Mon Sep 17 00:00:00 2001
+From 25bc684248f21b1b947812b06777707537100a97 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 15:40:42 +0100
-Subject: [PATCH 20/48] backup: vma: run flush inside coroutine
+Subject: [PATCH 20/49] backup: vma: run flush inside coroutine
---
blockdev.c | 10 +++++++++-
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/blockdev.c b/blockdev.c
-index ef159b0..a9a900e 100644
+index ef159b0753..a9a900e6c8 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3087,6 +3087,13 @@ static void pvebackup_cleanup(void)
block_job_cb(bs, ret);
diff --git a/vma-writer.c b/vma-writer.c
-index ec8da53..216577a 100644
+index ec8da5378d..216577a4f7 100644
--- a/vma-writer.c
+++ b/vma-writer.c
@@ -700,6 +700,10 @@ int vma_writer_close(VmaWriter *vmaw, Error **errp)
if (vmaw->cmd) {
--
-2.1.4
+2.11.0
-From 4de872af5f176bbcc0d2f19b9fd30a7cefbddd9a Mon Sep 17 00:00:00 2001
+From 3e22faf5b9a0572e2a91644306bdcd5f93a0af58 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 15:41:13 +0100
-Subject: [PATCH 21/48] backup: do not use bdrv_drain_all
+Subject: [PATCH 21/49] backup: do not use bdrv_drain_all
---
blockdev.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index a9a900e..36b4083 100644
+index a9a900e6c8..36b4083ae9 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3135,9 +3135,6 @@ static void pvebackup_cancel(void *opaque)
}
}
--
-2.1.4
+2.11.0
-From ab6904d8e0f3a976ade19e8b5f99270738ed6518 Mon Sep 17 00:00:00 2001
+From dbd7eef96fe140c5ce332cee8173fe5b6ac44676 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 16:04:32 +0100
-Subject: [PATCH 22/48] internal snapshot async
+Subject: [PATCH 22/49] internal snapshot async
---
Makefile.objs | 1 +
create mode 100644 savevm-async.c
diff --git a/Makefile.objs b/Makefile.objs
-index 9b12ee6..f5f8dba 100644
+index 9b12ee6afa..f5f8dbab3b 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -51,6 +51,7 @@ common-obj-$(CONFIG_LINUX) += fsdev/
common-obj-$(CONFIG_SPICE) += spice-qemu-char.o
diff --git a/block.c b/block.c
-index 6e906ec..5563a4f 100644
+index 927ba89eb7..884cbf83f2 100644
--- a/block.c
+++ b/block.c
-@@ -3045,7 +3045,7 @@ out:
+@@ -3087,7 +3087,7 @@ out:
bdrv_unref(bs_new);
}
assert(!bs->job);
assert(bdrv_op_blocker_is_empty(bs));
diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
-index 1a18380..3b5a0f9 100644
+index 1a1838099f..3b5a0f95e4 100644
--- a/hmp-commands-info.hx
+++ b/hmp-commands-info.hx
@@ -573,6 +573,19 @@ Show current migration xbzrle cache size.
.args_type = "",
.params = "",
diff --git a/hmp-commands.hx b/hmp-commands.hx
-index 7288203..a2867b5 100644
+index 72882039ee..a2867b56f2 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1808,3 +1808,35 @@ ETEXI
+ .cmd = hmp_savevm_end,
+ },
diff --git a/hmp.c b/hmp.c
-index 465d7fa..aaf0de1 100644
+index 465d7faad0..aaf0de1642 100644
--- a/hmp.c
+++ b/hmp.c
@@ -2270,6 +2270,63 @@ void hmp_info_memory_devices(Monitor *mon, const QDict *qdict)
{
IOThreadInfoList *info_list = qmp_query_iothreads(NULL);
diff --git a/hmp.h b/hmp.h
-index 17a65b2..8c1b484 100644
+index 17a65b2313..8c1b4846b3 100644
--- a/hmp.h
+++ b/hmp.h
@@ -26,6 +26,7 @@ void hmp_info_status(Monitor *mon, const QDict *qdict);
void hmp_screendump(Monitor *mon, const QDict *qdict);
void hmp_nbd_server_start(Monitor *mon, const QDict *qdict);
diff --git a/include/block/block.h b/include/block/block.h
-index 5149260..b29c69d 100644
+index 5149260827..b29c69d633 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -295,6 +295,7 @@ BlockDriverState *bdrv_find_backing_image(BlockDriverState *bs,
int64_t bdrv_getlength(BlockDriverState *bs);
int64_t bdrv_get_allocated_file_size(BlockDriverState *bs);
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
-index 576c7ce..74623de 100644
+index 576c7ce640..74623de16c 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -78,6 +78,7 @@ void qemu_remove_machine_init_done_notifier(Notifier *notify);
uint64_t *res_non_postcopiable,
uint64_t *res_postcopiable);
diff --git a/migration/savevm.c b/migration/savevm.c
-index 3b19a4a..feb0dc6 100644
+index 3b19a4a274..feb0dc6834 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -970,11 +970,11 @@ void qemu_savevm_state_header(QEMUFile *f)
/* Give an estimate of the amount left to be transferred,
diff --git a/qapi-schema.json b/qapi-schema.json
-index 1127f2c..c33ebb3 100644
+index edb7c32ac9..a25074183c 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -813,6 +813,40 @@
# @query-migrate:
#
# Returns information about current migration process. If migration
-@@ -4828,9 +4862,43 @@
+@@ -4825,9 +4859,43 @@
#
# Since: 1.2.0
##
#
# An enumeration of key name.
diff --git a/qemu-options.hx b/qemu-options.hx
-index 99af8ed..10f0e81 100644
+index 99af8edf5f..10f0e81f9b 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -3396,6 +3396,19 @@ STEXI
"-daemonize daemonize QEMU after initializing\n", QEMU_ARCH_ALL)
diff --git a/savevm-async.c b/savevm-async.c
new file mode 100644
-index 0000000..9704a41
+index 0000000000..9704a412d9
--- /dev/null
+++ b/savevm-async.c
@@ -0,0 +1,525 @@
+ return ret;
+}
diff --git a/vl.c b/vl.c
-index 868c489..19afd47 100644
+index 868c4893df..19afd47871 100644
--- a/vl.c
+++ b/vl.c
@@ -2960,6 +2960,7 @@ int main(int argc, char **argv, char **envp)
qdev_prop_check_globals();
--
-2.1.4
+2.11.0
-From b5ac1badd1810f87aae5091f44bee54e3c45e979 Mon Sep 17 00:00:00 2001
+From 443de3d7bdffb7ddee0a048c4c3f370eaf0b45f2 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 16:31:51 +0100
-Subject: [PATCH 23/48] backup: vma: allow empty backups
+Subject: [PATCH 23/49] backup: vma: allow empty backups
---
vma-reader.c | 29 ++++++++++++-------------
4 files changed, 76 insertions(+), 54 deletions(-)
diff --git a/vma-reader.c b/vma-reader.c
-index 2aafb26..78f1de9 100644
+index 2aafb26b2a..78f1de9499 100644
--- a/vma-reader.c
+++ b/vma-reader.c
@@ -326,11 +326,6 @@ static int vma_reader_read_head(VmaReader *vmar, Error **errp)
}
return ret;
diff --git a/vma-writer.c b/vma-writer.c
-index 216577a..0dd668b 100644
+index 216577a4f7..0dd668b257 100644
--- a/vma-writer.c
+++ b/vma-writer.c
@@ -252,7 +252,7 @@ vma_queue_write(VmaWriter *vmaw, const void *buf, size_t bytes)
return open_drives;
diff --git a/vma.c b/vma.c
-index 1ffaced..c7c0538 100644
+index 1ffaced897..c7c05385f6 100644
--- a/vma.c
+++ b/vma.c
@@ -28,7 +28,7 @@ static void help(void)
Coroutine *co = qemu_coroutine_create(backup_run_empty, vmaw);
qemu_coroutine_enter(co);
diff --git a/vma.h b/vma.h
-index 98377e4..365ceb2 100644
+index 98377e473e..365ceb2bcb 100644
--- a/vma.h
+++ b/vma.h
@@ -128,6 +128,7 @@ int64_t coroutine_fn vma_writer_write(VmaWriter *vmaw, uint8_t dev_id,
int vma_writer_get_status(VmaWriter *vmaw, VmaStatus *status);
void vma_writer_set_error(VmaWriter *vmaw, const char *fmt, ...);
--
-2.1.4
+2.11.0
-From 759fdd7b7ea2f90a463d4bc766f9c53053498c58 Mon Sep 17 00:00:00 2001
+From 8459f3c5a32357477435b7f094b3007928ec6d9e Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 16:34:41 +0100
-Subject: [PATCH 24/48] qmp: add get_link_status
+Subject: [PATCH 24/49] qmp: add get_link_status
---
net/net.c | 27 +++++++++++++++++++++++++++
2 files changed, 43 insertions(+)
diff --git a/net/net.c b/net/net.c
-index 0ac3b9e..7410c1e 100644
+index 0ac3b9e80c..7410c1e5f3 100644
--- a/net/net.c
+++ b/net/net.c
@@ -1373,6 +1373,33 @@ void hmp_info_network(Monitor *mon, const QDict *qdict)
{
NetClientState *ncs[MAX_QUEUE_NUM];
diff --git a/qapi-schema.json b/qapi-schema.json
-index c33ebb3..79bfd97 100644
+index a25074183c..21f822aada 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -56,6 +56,7 @@
#
# Request the balloon driver to change its balloon size.
--
-2.1.4
+2.11.0
-From 8a8c61f58cfde89540c885bc3b0f7e7e9d820782 Mon Sep 17 00:00:00 2001
+From 2d6d2c0c0945595f0e104b86924b2e8599f1bcde Mon Sep 17 00:00:00 2001
From: Alexandre Derumier <aderumier@odiso.com>
Date: Tue, 29 Sep 2015 15:37:44 +0200
-Subject: [PATCH 25/48] smm_available = false
+Subject: [PATCH 25/49] smm_available = false
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
-index 81e91a4..4161a45 100644
+index 81e91a4897..4161a45dc0 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -2123,7 +2123,7 @@ bool pc_machine_is_smm_enabled(PCMachineState *pcms)
if (smm_available) {
--
-2.1.4
+2.11.0
-From 7329980dbe0b2c40a7262c4ea4946dfb23c189c6 Mon Sep 17 00:00:00 2001
+From fcb956b9bf1f3511f31cf406a121ef4894ce73f3 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 16:50:05 +0100
-Subject: [PATCH 26/48] use whitespace between VERSION and PKGVERSION
+Subject: [PATCH 26/49] use whitespace between VERSION and PKGVERSION
Our kvm version parser expects a white space or comma after
the version string, see PVE::QemuServer::kvm_user_version()
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/vl.c b/vl.c
-index 19afd47..d0780a4 100644
+index 19afd47871..d0780a41b4 100644
--- a/vl.c
+++ b/vl.c
@@ -1909,7 +1909,7 @@ static void main_loop(void)
}
--
-2.1.4
+2.11.0
-From 4e55ff68ec7aef1e2ea602890495cd862dd1161c Mon Sep 17 00:00:00 2001
+From bba85b2c9ffcc2e83e276f632c774126623a08b1 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 9 Dec 2015 16:51:23 +0100
-Subject: [PATCH 27/48] vma: add firewall
+Subject: [PATCH 27/49] vma: add firewall
---
blockdev.c | 78 ++++++++++++++++++++++++++++++++++----------------------
3 files changed, 50 insertions(+), 31 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index 36b4083..3b82339 100644
+index 36b4083ae9..3b823393bb 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3163,6 +3163,44 @@ void qmp_backup_cancel(Error **errp)
backup_state.cancel = false;
diff --git a/hmp.c b/hmp.c
-index aaf0de1..12f1f46 100644
+index aaf0de1642..12f1f46125 100644
--- a/hmp.c
+++ b/hmp.c
@@ -1670,7 +1670,7 @@ void hmp_backup(Monitor *mon, const QDict *qdict)
hmp_handle_error(mon, &error);
diff --git a/qapi-schema.json b/qapi-schema.json
-index 79bfd97..6334018 100644
+index 21f822aada..b20020a054 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -635,6 +635,7 @@
'returns': 'UuidInfo' }
--
-2.1.4
+2.11.0
-From 54847dbb3050d9ec9dd786d572d9c1dff0757d4d Mon Sep 17 00:00:00 2001
+From 69958cb77bf634951bde45a234871ca591e62dcc Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Thu, 10 Dec 2015 15:14:00 +0100
-Subject: [PATCH 28/48] savevm-async: migration and bdrv_open update
+Subject: [PATCH 28/49] savevm-async: migration and bdrv_open update
---
savevm-async.c | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/savevm-async.c b/savevm-async.c
-index 9704a41..6ac03af 100644
+index 9704a412d9..6ac03af9c8 100644
--- a/savevm-async.c
+++ b/savevm-async.c
@@ -154,10 +154,10 @@ static int block_state_close(void *opaque)
bdrv_op_block_all(bs, blocker);
--
-2.1.4
+2.11.0
-From 4e0a43ec969bcdf5d3bb01892bc75346e47676d6 Mon Sep 17 00:00:00 2001
+From ea4b82c698e14c17393cbbaf49ef1e84a02603b8 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Tue, 12 Jan 2016 09:09:49 +0100
-Subject: [PATCH 29/48] vnc: make x509 imply tls again
+Subject: [PATCH 29/49] vnc: make x509 imply tls again
---
ui/vnc.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/ui/vnc.c b/ui/vnc.c
-index 29575f8..039b3ed 100644
+index 9c8ab42eea..eb9420e830 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
-@@ -3878,9 +3878,8 @@ void vnc_display_open(const char *id, Error **errp)
+@@ -3881,9 +3881,8 @@ void vnc_display_open(const char *id, Error **errp)
const char *path;
bool tls = false, x509 = false, x509verify = false;
tls = qemu_opt_get_bool(opts, "tls", false);
x509 = true;
} else {
--
-2.1.4
+2.11.0
-From d55b3d4bca482ded41c0c1489626e426007e786c Mon Sep 17 00:00:00 2001
+From aeb28b3ef956941778dcfb395da885d53abb5a8d Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Mon, 11 Jan 2016 10:40:31 +0100
-Subject: [PATCH 30/48] PVE VNC authentication
+Subject: [PATCH 30/49] PVE VNC authentication
---
crypto/tlscreds.c | 47 +++++++++++
11 files changed, 376 insertions(+), 41 deletions(-)
diff --git a/crypto/tlscreds.c b/crypto/tlscreds.c
-index a896553..e9ae13c 100644
+index a8965531b6..e9ae13ce47 100644
--- a/crypto/tlscreds.c
+++ b/crypto/tlscreds.c
@@ -158,6 +158,33 @@ qcrypto_tls_creds_prop_get_verify(Object *obj,
diff --git a/crypto/tlscredspriv.h b/crypto/tlscredspriv.h
-index 13e9b6c..0356acc 100644
+index 13e9b6c0b2..0356acc2c9 100644
--- a/crypto/tlscredspriv.h
+++ b/crypto/tlscredspriv.h
@@ -36,6 +36,8 @@ int qcrypto_tls_creds_get_dh_params_file(QCryptoTLSCreds *creds,
#endif /* QCRYPTO_TLSCREDSPRIV_H */
diff --git a/crypto/tlscredsx509.c b/crypto/tlscredsx509.c
-index 50eb54f..09f7364 100644
+index 50eb54f6bb..09f7364001 100644
--- a/crypto/tlscredsx509.c
+++ b/crypto/tlscredsx509.c
@@ -555,22 +555,23 @@ qcrypto_tls_creds_x509_load(QCryptoTLSCredsX509 *creds,
goto cleanup;
}
diff --git a/crypto/tlssession.c b/crypto/tlssession.c
-index 96a02de..c453e29 100644
+index 96a02deb69..c453e29cad 100644
--- a/crypto/tlssession.c
+++ b/crypto/tlssession.c
@@ -23,6 +23,7 @@
#include "trace.h"
diff --git a/include/crypto/tlscreds.h b/include/crypto/tlscreds.h
-index ad47d88..f86d379 100644
+index ad47d88be7..f86d379f26 100644
--- a/include/crypto/tlscreds.h
+++ b/include/crypto/tlscreds.h
@@ -55,6 +55,7 @@ struct QCryptoTLSCreds {
diff --git a/include/ui/console.h b/include/ui/console.h
-index d759338..69f010e 100644
+index d759338816..69f010e1db 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -462,6 +462,7 @@ static inline void cocoa_display_init(DisplayState *ds, int full_screen)
void vnc_display_open(const char *id, Error **errp);
void vnc_display_add_client(const char *id, int csock, bool skipauth);
diff --git a/qemu-options.hx b/qemu-options.hx
-index 10f0e81..fbd1a1c 100644
+index 10f0e81f9b..fbd1a1cecf 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -513,6 +513,9 @@ STEXI
"-fda/-fdb file use 'file' as floppy disk 0/1 image\n", QEMU_ARCH_ALL)
DEF("fdb", HAS_ARG, QEMU_OPTION_fdb, "", QEMU_ARCH_ALL)
diff --git a/ui/vnc-auth-vencrypt.c b/ui/vnc-auth-vencrypt.c
-index ffaab57..de1c194 100644
+index ffaab57550..de1c1949ba 100644
--- a/ui/vnc-auth-vencrypt.c
+++ b/ui/vnc-auth-vencrypt.c
@@ -28,6 +28,107 @@
vnc_read_when(vs, protocol_client_vencrypt_auth, 4);
}
diff --git a/ui/vnc.c b/ui/vnc.c
-index 039b3ed..a34ba08 100644
+index eb9420e830..2710614a72 100644
--- a/ui/vnc.c
+++ b/ui/vnc.c
@@ -56,6 +56,125 @@ static const struct timeval VNC_REFRESH_LOSSY = { 2, 0 };
static QTAILQ_HEAD(, VncDisplay) vnc_displays =
QTAILQ_HEAD_INITIALIZER(vnc_displays);
-@@ -3350,10 +3469,16 @@ vnc_display_setup_auth(int *auth,
+@@ -3356,10 +3475,16 @@ vnc_display_setup_auth(int *auth,
if (password) {
if (is_x509) {
VNC_DEBUG("Initializing VNC server with x509 password auth\n");
}
} else if (sasl) {
-@@ -3387,6 +3512,7 @@ vnc_display_create_creds(bool x509,
+@@ -3393,6 +3518,7 @@ vnc_display_create_creds(bool x509,
bool x509verify,
const char *dir,
const char *id,
Error **errp)
{
gchar *credsid = g_strdup_printf("tlsvnc%s", id);
-@@ -3402,6 +3528,7 @@ vnc_display_create_creds(bool x509,
+@@ -3408,6 +3534,7 @@ vnc_display_create_creds(bool x509,
"endpoint", "server",
"dir", dir,
"verify-peer", x509verify ? "yes" : "no",
NULL);
} else {
creds = object_new_with_props(TYPE_QCRYPTO_TLS_CREDS_ANON,
-@@ -3409,6 +3536,7 @@ vnc_display_create_creds(bool x509,
+@@ -3415,6 +3542,7 @@ vnc_display_create_creds(bool x509,
credsid,
&err,
"endpoint", "server",
NULL);
}
-@@ -3876,12 +4004,17 @@ void vnc_display_open(const char *id, Error **errp)
+@@ -3879,12 +4007,17 @@ void vnc_display_open(const char *id, Error **errp)
}
} else {
const char *path;
} else {
path = qemu_opt_get(opts, "x509verify");
if (path) {
-@@ -3893,6 +4026,7 @@ void vnc_display_open(const char *id, Error **errp)
+@@ -3896,6 +4029,7 @@ void vnc_display_open(const char *id, Error **errp)
x509verify,
path,
vd->id,
if (!vd->tlscreds) {
goto fail;
diff --git a/ui/vnc.h b/ui/vnc.h
-index 694cf32..78d622a 100644
+index 694cf32ca9..78d622ab84 100644
--- a/ui/vnc.h
+++ b/ui/vnc.h
@@ -284,6 +284,8 @@ struct VncState
+
#endif /* QEMU_VNC_H */
diff --git a/vl.c b/vl.c
-index d0780a4..2496b06 100644
+index d0780a41b4..2496b066b7 100644
--- a/vl.c
+++ b/vl.c
@@ -2947,6 +2947,7 @@ static int qemu_read_default_config_file(void)
vnc_parse(optarg, &error_fatal);
break;
--
-2.1.4
+2.11.0
-From c1210916b52651aaa5d27e69fce78dd57818eab1 Mon Sep 17 00:00:00 2001
+From 478d42f3490bdb94360dc7ed6a3437007d0dc97c Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Mon, 8 Feb 2016 08:23:34 +0100
-Subject: [PATCH 31/48] vma-writer: don't bail out on zero-length files
+Subject: [PATCH 31/49] vma-writer: don't bail out on zero-length files
---
vma-writer.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/vma-writer.c b/vma-writer.c
-index 0dd668b..70dcca0 100644
+index 0dd668b257..70dcca0771 100644
--- a/vma-writer.c
+++ b/vma-writer.c
@@ -130,7 +130,6 @@ int vma_writer_add_config(VmaWriter *vmaw, const char *name, gpointer data,
gchar *basename = g_path_get_basename(name);
uint32_t name_ptr = allocate_header_string(vmaw, basename);
--
-2.1.4
+2.11.0
-From 0cf02f586f50e0bc1b25f0ecf76207b2510d77df Mon Sep 17 00:00:00 2001
+From 0f5c3683d083db785b56372367d54385102b4153 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Tue, 23 Feb 2016 15:48:41 +0100
-Subject: [PATCH 32/48] vma: better driver guessing for bdrv_open
+Subject: [PATCH 32/49] vma: better driver guessing for bdrv_open
Only use 'raw' when the file actually ends with .raw and
no protocol has been specified. With protocol pass the
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/vma.c b/vma.c
-index c7c0538..4903568 100644
+index c7c05385f6..4903568fb4 100644
--- a/vma.c
+++ b/vma.c
@@ -294,7 +294,20 @@ static int extract_content(int argc, char **argv)
error_get_pretty(errp));
}
--
-2.1.4
+2.11.0
-From 35facc3a3549baf4cccaef27afa9c35a25abe91c Mon Sep 17 00:00:00 2001
+From 06a152c85ba52b0af3081ab678e860b05e316aea Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Thu, 17 Mar 2016 11:33:37 +0100
-Subject: [PATCH 33/48] block: add the zeroinit block driver filter
+Subject: [PATCH 33/49] block: add the zeroinit block driver filter
---
block/Makefile.objs | 1 +
create mode 100644 block/zeroinit.c
diff --git a/block/Makefile.objs b/block/Makefile.objs
-index de96f8e..8cdac08 100644
+index de96f8ee80..8cdac08db5 100644
--- a/block/Makefile.objs
+++ b/block/Makefile.objs
@@ -4,6 +4,7 @@ block-obj-y += qed.o qed-gencb.o qed-l2-cache.o qed-table.o qed-cluster.o
block-obj-$(CONFIG_WIN32) += file-win32.o win32-aio.o
diff --git a/block/zeroinit.c b/block/zeroinit.c
new file mode 100644
-index 0000000..0a8c7f9
+index 0000000000..0a8c7f9622
--- /dev/null
+++ b/block/zeroinit.c
@@ -0,0 +1,219 @@
+
+block_init(bdrv_zeroinit_init);
--
-2.1.4
+2.11.0
-From a61194439318c95dfcb7df973ac961c12937dbcd Mon Sep 17 00:00:00 2001
+From 541834a4018302bea4e164ee7b09d080adcecb86 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Tue, 12 Apr 2016 13:49:44 +0200
-Subject: [PATCH 34/48] vma: add format option to device mapping
+Subject: [PATCH 34/49] vma: add format option to device mapping
The BDRV_O_PROTOCOL option breaks non-raw protocol devices,
so we instead now allow the format to be explicitly
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/vma.c b/vma.c
-index 4903568..f71e5a5 100644
+index 4903568fb4..f71e5a5933 100644
--- a/vma.c
+++ b/vma.c
@@ -131,6 +131,7 @@ static int list_content(int argc, char **argv)
if (errp || bdrv_open(&bs, devfn, NULL, options, flags, &errp)) {
--
-2.1.4
+2.11.0
-From 6db418de8e775dd2f3699033699777498f4e2afd Mon Sep 17 00:00:00 2001
+From 2c724d4f2cc5da6664da260f437b76b7111f680f Mon Sep 17 00:00:00 2001
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
Date: Wed, 6 Apr 2016 16:45:15 +0200
-Subject: [PATCH 35/48] fix possible unitialised return value
+Subject: [PATCH 35/49] fix possible unitialised return value
---
migration/savevm.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/migration/savevm.c b/migration/savevm.c
-index feb0dc6..d2615f4 100644
+index feb0dc6834..d2615f4620 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1111,7 +1111,7 @@ int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only)
trace_savevm_state_complete_precopy();
--
-2.1.4
+2.11.0
-From f9fec937bcc33ff1edb11b53107486a35b23f2a8 Mon Sep 17 00:00:00 2001
+From eb44a5c162bb938cb0f7dfe920e32870540c3678 Mon Sep 17 00:00:00 2001
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
Date: Wed, 6 Apr 2016 16:47:54 +0200
-Subject: [PATCH 36/48] vnc: refactor to QIOChannelSocket
+Subject: [PATCH 36/49] vnc: refactor to QIOChannelSocket
---
ui/vnc-auth-vencrypt.c | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/ui/vnc-auth-vencrypt.c b/ui/vnc-auth-vencrypt.c
-index de1c194..594ca73 100644
+index de1c1949ba..594ca737a9 100644
--- a/ui/vnc-auth-vencrypt.c
+++ b/ui/vnc-auth-vencrypt.c
@@ -28,27 +28,23 @@
}
--
-2.1.4
+2.11.0
-From d63b3c58bce32b976231923f5e186ebd55259c98 Mon Sep 17 00:00:00 2001
+From 8be3faeadab088d717a91bfcad6c481bca0264f7 Mon Sep 17 00:00:00 2001
From: Thomas Lamprecht <t.lamprecht@proxmox.com>
Date: Fri, 1 Jul 2016 15:47:29 +0200
-Subject: [PATCH 37/48] vma: use BlockBackend on extract
+Subject: [PATCH 37/49] vma: use BlockBackend on extract
As we else rely on bdrv_close_all() do clean up, which was rewritten
in ca9bd24cf1d53775169ba9adc17e265554d1afed and fails on "dangling"
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/vma.c b/vma.c
-index f71e5a5..ad51090 100644
+index f71e5a5933..ad51090651 100644
--- a/vma.c
+++ b/vma.c
@@ -20,6 +20,7 @@
return ret;
--
-2.1.4
+2.11.0
-From a004ee9295029201e8fc3b8fe4acf7f85674527c Mon Sep 17 00:00:00 2001
+From e1e6c67464a39d9fe9e2133f4deaf4113df2b300 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Fri, 9 Sep 2016 14:51:28 +0200
-Subject: [PATCH 38/48] vma: byte based write calls
+Subject: [PATCH 38/49] vma: byte based write calls
---
vma-reader.c | 42 +++++++++++++++++++++---------------------
3 files changed, 32 insertions(+), 34 deletions(-)
diff --git a/vma-reader.c b/vma-reader.c
-index 78f1de9..2000889 100644
+index 78f1de9499..2000889bd3 100644
--- a/vma-reader.c
+++ b/vma-reader.c
@@ -25,7 +25,7 @@
return -1;
}
diff --git a/vma.c b/vma.c
-index ad51090..aafdc2d 100644
+index ad51090651..aafdc2d7f5 100644
--- a/vma.c
+++ b/vma.c
@@ -334,9 +334,7 @@ static int extract_content(int argc, char **argv)
job->dev_id = dev_id;
diff --git a/vma.h b/vma.h
-index 365ceb2..fa6f4df 100644
+index 365ceb2bcb..fa6f4df7e7 100644
--- a/vma.h
+++ b/vma.h
@@ -140,7 +140,7 @@ VmaHeader *vma_reader_get_header(VmaReader *vmar);
int vma_reader_restore(VmaReader *vmar, int vmstate_fd, bool verbose,
Error **errp);
--
-2.1.4
+2.11.0
-From 0dd047c39e7821c8e31f9133be12bc9be61c045c Mon Sep 17 00:00:00 2001
+From a1759898bd5590543f712d707ffba2c9e8d92bd1 Mon Sep 17 00:00:00 2001
From: Alexandre Derumier <aderumier@odiso.com>
Date: Tue, 26 Jul 2016 16:51:00 +0200
-Subject: [PATCH 39/48] rbd: disable rbd_cache_writethrough_until_flush with
+Subject: [PATCH 39/49] rbd: disable rbd_cache_writethrough_until_flush with
cache=unsafe
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
1 file changed, 4 insertions(+)
diff --git a/block/rbd.c b/block/rbd.c
-index 498322b..e9c02c6 100644
+index 1ceeeb5a60..30fe179585 100644
--- a/block/rbd.c
+++ b/block/rbd.c
-@@ -616,6 +616,10 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags,
+@@ -623,6 +623,10 @@ static int qemu_rbd_open(BlockDriverState *bs, QDict *options, int flags,
rados_conf_set(s->cluster, "rbd_cache", "true");
}
if (r < 0) {
error_setg_errno(errp, -r, "error connecting");
--
-2.1.4
+2.11.0
-From 5a587bc1cfc30faa8506b5c2925b767b4c3d7b56 Mon Sep 17 00:00:00 2001
+From 575f41c5a7a69d66479c709a8a30b6c2d2592dec Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Mon, 1 Aug 2016 10:52:46 +0200
-Subject: [PATCH 40/48] enable cache=unsafe for vma extract_content and
+Subject: [PATCH 40/49] enable cache=unsafe for vma extract_content and
qmp_savevm_start
We don't send any flush here, so we need to open with cache=unsafe.
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/savevm-async.c b/savevm-async.c
-index 6ac03af..46c1be7 100644
+index 6ac03af9c8..46c1be7887 100644
--- a/savevm-async.c
+++ b/savevm-async.c
@@ -253,7 +253,7 @@ void qmp_savevm_start(bool has_statefile, const char *statefile, Error **errp)
if (snap_state.state != SAVE_STATE_DONE) {
diff --git a/vma.c b/vma.c
-index aafdc2d..4f55799 100644
+index aafdc2d7f5..4f55799533 100644
--- a/vma.c
+++ b/vma.c
@@ -281,7 +281,7 @@ static int extract_content(int argc, char **argv)
if (readmap) {
--
-2.1.4
+2.11.0
-From d7b0ad8cf8ef0aad35b0549128003dbb49b8386d Mon Sep 17 00:00:00 2001
+From 0bf0f6e121a93883fc5b575e6cdbdcc95e26db7e Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Fri, 9 Sep 2016 15:21:19 +0200
-Subject: [PATCH 41/48] savevm-async updates
+Subject: [PATCH 41/49] savevm-async updates
---
savevm-async.c | 79 +++++++++++++++++++++++++++++-----------------------------
1 file changed, 39 insertions(+), 40 deletions(-)
diff --git a/savevm-async.c b/savevm-async.c
-index 46c1be7..2f4766c 100644
+index 46c1be7887..2f4766cf6c 100644
--- a/savevm-async.c
+++ b/savevm-async.c
@@ -20,6 +20,8 @@
return ret;
}
--
-2.1.4
+2.11.0
-From 4fb6191acb1fdff8170a26ba9acd835c9eaf8218 Mon Sep 17 00:00:00 2001
+From bb3beef4498fdf2bd5aba2a5e91a4d889f7db0e1 Mon Sep 17 00:00:00 2001
From: Alexandre Derumier <aderumier@odiso.com>
Date: Tue, 13 Sep 2016 01:57:56 +0200
-Subject: [PATCH 42/48] qmp_snapshot_drive: add aiocontext
+Subject: [PATCH 42/49] qmp_snapshot_drive: add aiocontext
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/savevm-async.c b/savevm-async.c
-index 2f4766c..5913a90 100644
+index 2f4766cf6c..5913a905d8 100644
--- a/savevm-async.c
+++ b/savevm-async.c
@@ -345,6 +345,7 @@ void qmp_snapshot_drive(const char *device, const char *name, Error **errp)
void qmp_delete_drive_snapshot(const char *device, const char *name,
--
-2.1.4
+2.11.0
-From 220fb93343dc6c05989c903873d8ed68943848ef Mon Sep 17 00:00:00 2001
+From d35049d4852cde2197c74185ccb1c1d0869ebf82 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Fri, 21 Oct 2016 09:09:26 +0200
-Subject: [PATCH 43/48] vma: sizes passed to blk_co_preadv should be bytes now
+Subject: [PATCH 43/49] vma: sizes passed to blk_co_preadv should be bytes now
---
vma.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/vma.c b/vma.c
-index 4f55799..0491542 100644
+index 4f55799533..04915427c8 100644
--- a/vma.c
+++ b/vma.c
@@ -466,8 +466,8 @@ static void coroutine_fn backup_run(void *opaque)
vma_writer_set_error(job->vmaw, "read error", -1);
goto out;
--
-2.1.4
+2.11.0
-From cb89d816594f141bad45536886900cbf33ba09bd Mon Sep 17 00:00:00 2001
+From 74c0a7a984dde09ca789b6906418ec8ed98ece05 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Mon, 24 Oct 2016 09:32:36 +0200
-Subject: [PATCH 44/48] glusterfs: no default logfile if daemonized
+Subject: [PATCH 44/49] glusterfs: no default logfile if daemonized
---
block/gluster.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/block/gluster.c b/block/gluster.c
-index a577dae..e712dc7 100644
+index cf29b5f9a4..bc44c50db0 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -33,7 +33,7 @@
glfs = glfs_find_preopened(gconf->volume);
if (glfs) {
-@@ -433,9 +434,15 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
+@@ -440,9 +441,15 @@ static struct glfs *qemu_gluster_glfs_init(BlockdevOptionsGluster *gconf,
}
}
ret = glfs_init(glfs);
--
-2.1.4
+2.11.0
-From 58d620cb1d511be7a6521e76a6cd54ebbbbae2b7 Mon Sep 17 00:00:00 2001
+From a9cab937a9406034b56a28ebd51d02bc6405cf4a Mon Sep 17 00:00:00 2001
From: Alexandre Derumier <aderumier@odiso.com>
Date: Mon, 7 Nov 2016 11:47:50 +0100
-Subject: [PATCH 45/48] qmp_delete_drive_snapshot : add aiocontext
+Subject: [PATCH 45/49] qmp_delete_drive_snapshot : add aiocontext
this fix snapshot delete of qcow2 with iothread enabled
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/savevm-async.c b/savevm-async.c
-index 5913a90..3adf89f 100644
+index 5913a905d8..3adf89fdb2 100644
--- a/savevm-async.c
+++ b/savevm-async.c
@@ -427,6 +427,7 @@ void qmp_delete_drive_snapshot(const char *device, const char *name,
static ssize_t loadstate_get_buffer(void *opaque, uint8_t *buf, int64_t pos,
--
-2.1.4
+2.11.0
-From 190e9321e1657ec0b956ecece21d6a037487cd14 Mon Sep 17 00:00:00 2001
+From abc1172df5ed472111a8bed0336441449ba03d0c Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Tue, 8 Nov 2016 11:13:06 +0100
-Subject: [PATCH 46/48] convert savevm-async to threads
+Subject: [PATCH 46/49] convert savevm-async to threads
---
savevm-async.c | 144 +++++++++++++++++++++++++++++++++++----------------------
1 file changed, 88 insertions(+), 56 deletions(-)
diff --git a/savevm-async.c b/savevm-async.c
-index 3adf89f..9f839fa 100644
+index 3adf89fdb2..9f839faab5 100644
--- a/savevm-async.c
+++ b/savevm-async.c
@@ -48,6 +48,8 @@ static struct SnapshotState {
return;
--
-2.1.4
+2.11.0
-From 2cebda37c624832599906df01f540fdc76ecac50 Mon Sep 17 00:00:00 2001
+From a79af764a40e7587fe06ab058e42710253ddf686 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Wed, 30 Nov 2016 10:27:47 +0100
-Subject: [PATCH 47/48] glusterfs: allow partial reads
+Subject: [PATCH 47/49] glusterfs: allow partial reads
This should deal with qemu bug #1644754 until upstream
decides which way to go. The general direction seems to be
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/block/gluster.c b/block/gluster.c
-index e712dc7..daf6cec 100644
+index bc44c50db0..4fdf68f1fc 100644
--- a/block/gluster.c
+++ b/block/gluster.c
@@ -42,6 +42,7 @@ typedef struct GlusterAIOCB {
} GlusterAIOCB;
typedef struct BDRVGlusterState {
-@@ -705,8 +706,10 @@ static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
+@@ -713,8 +714,10 @@ static void gluster_finish_aiocb(struct glfs_fd *fd, ssize_t ret, void *arg)
acb->ret = 0; /* Success */
} else if (ret < 0) {
acb->ret = -errno; /* Read/Write failed */
}
aio_co_schedule(acb->aio_context, acb->coroutine);
-@@ -954,6 +957,7 @@ static coroutine_fn int qemu_gluster_co_pwrite_zeroes(BlockDriverState *bs,
+@@ -962,6 +965,7 @@ static coroutine_fn int qemu_gluster_co_pwrite_zeroes(BlockDriverState *bs,
acb.ret = 0;
acb.coroutine = qemu_coroutine_self();
acb.aio_context = bdrv_get_aio_context(bs);
ret = glfs_zerofill_async(s->fd, offset, size, gluster_finish_aiocb, &acb);
if (ret < 0) {
-@@ -1076,9 +1080,11 @@ static coroutine_fn int qemu_gluster_co_rw(BlockDriverState *bs,
+@@ -1084,9 +1088,11 @@ static coroutine_fn int qemu_gluster_co_rw(BlockDriverState *bs,
acb.aio_context = bdrv_get_aio_context(bs);
if (write) {
ret = glfs_preadv_async(s->fd, qiov->iov, qiov->niov, offset, 0,
gluster_finish_aiocb, &acb);
}
-@@ -1142,6 +1148,7 @@ static coroutine_fn int qemu_gluster_co_flush_to_disk(BlockDriverState *bs)
+@@ -1150,6 +1156,7 @@ static coroutine_fn int qemu_gluster_co_flush_to_disk(BlockDriverState *bs)
acb.ret = 0;
acb.coroutine = qemu_coroutine_self();
acb.aio_context = bdrv_get_aio_context(bs);
ret = glfs_fsync_async(s->fd, gluster_finish_aiocb, &acb);
if (ret < 0) {
-@@ -1188,6 +1195,7 @@ static coroutine_fn int qemu_gluster_co_pdiscard(BlockDriverState *bs,
+@@ -1196,6 +1203,7 @@ static coroutine_fn int qemu_gluster_co_pdiscard(BlockDriverState *bs,
acb.ret = 0;
acb.coroutine = qemu_coroutine_self();
acb.aio_context = bdrv_get_aio_context(bs);
ret = glfs_discard_async(s->fd, offset, size, gluster_finish_aiocb, &acb);
if (ret < 0) {
--
-2.1.4
+2.11.0
-From 40846f73aea36b4ef66cce152321208f7d820222 Mon Sep 17 00:00:00 2001
+From a334b486692afc5b5b7ffb55b661c5a0ad2c75e2 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Thu, 30 Mar 2017 16:05:34 +0200
-Subject: [PATCH 48/48] vma: don't use O_DIRECT on pipes
+Subject: [PATCH 48/49] vma: don't use O_DIRECT on pipes
It puts them in packet mode which potentially discards data.
+(since kernel 4.5)
---
vma-writer.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/vma-writer.c b/vma-writer.c
-index 70dcca0..9001cbd 100644
+index 70dcca0771..9001cbdd2b 100644
--- a/vma-writer.c
+++ b/vma-writer.c
@@ -283,9 +283,8 @@ VmaWriter *vma_writer_create(const char *filename, uuid_t uuid, Error **errp)
oflags = O_NONBLOCK|O_DIRECT|O_WRONLY|O_CREAT|O_EXCL;
vmaw->fd = qemu_open(filename, oflags, 0644);
--
-2.1.4
+2.11.0
-From 5445b96892a6350894ea3785f174157c4e7bbbaa Mon Sep 17 00:00:00 2001
+From e042ab947e3256e3a33f9fa5a21d8c01a667ff16 Mon Sep 17 00:00:00 2001
From: Wolfgang Bumiller <w.bumiller@proxmox.com>
Date: Fri, 31 Mar 2017 09:27:58 +0200
Subject: [PATCH 49/49] block: zeroinit: request child permissions
1 file changed, 1 insertion(+)
diff --git a/block/zeroinit.c b/block/zeroinit.c
-index 0a8c7f9..a857ec3 100644
+index 0a8c7f9622..a857ec3c62 100644
--- a/block/zeroinit.c
+++ b/block/zeroinit.c
@@ -191,6 +191,7 @@ static BlockDriver bdrv_zeroinit = {
.bdrv_co_pwrite_zeroes = zeroinit_co_pwrite_zeroes,
--
-2.1.4
+2.11.0
pve/0047-glusterfs-allow-partial-reads.patch
pve/0048-vma-don-t-use-O_DIRECT-on-pipes.patch
pve/0049-block-zeroinit-request-child-permissions.patch
+extra/0001-block-ignore-guest-dev-permissions-during-incoming-migration.patch
-Subproject commit df9046363220e57d45818312759b954c033c58ab
+Subproject commit 1fde6ee885d3e778acb326cab9f7037939839537