-From 46f9d5c97a466bc121c99d9f178a4c1bdc74e9f9 Mon Sep 17 00:00:00 2001
+From c46139b295f9edffd43a12e7f029fce4f9b2ea46 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/47] backup: modify job api
for backup_start. For a dump-backup the target parameter
can now be NULL so access to target needs to be guarded now.
---
- block/backup.c | 116 ++++++++++++++++++++++++++++------------------
+ block/backup.c | 118 +++++++++++++++++++++++++++++-----------------
block/replication.c | 3 +-
blockdev.c | 4 +-
include/block/block_int.h | 5 ++
- 4 files changed, 81 insertions(+), 47 deletions(-)
+ 4 files changed, 83 insertions(+), 47 deletions(-)
diff --git a/block/backup.c b/block/backup.c
-index a4fb288..3a230b5 100644
+index a4fb288..fe4ce7f 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -36,6 +36,7 @@ typedef struct BackupBlockJob {
}
if (ret < 0) {
trace_backup_do_cow_write_fail(job, start, ret);
-@@ -330,9 +342,11 @@ static BlockErrorAction backup_error_action(BackupBlockJob *job,
+@@ -246,6 +258,8 @@ static void backup_abort(BlockJob *job)
+ static void backup_clean(BlockJob *job)
+ {
+ BackupBlockJob *s = container_of(job, BackupBlockJob, common);
++ if (!s->target)
++ return;
+ assert(s->target);
+ blk_unref(s->target);
+ s->target = NULL;
+@@ -330,9 +344,11 @@ static BlockErrorAction backup_error_action(BackupBlockJob *job,
if (read) {
return block_job_error_action(&job->common, job->on_source_error,
true, error);
}
}
-@@ -453,6 +467,7 @@ static void coroutine_fn backup_run(void *opaque)
+@@ -453,6 +469,7 @@ static void coroutine_fn backup_run(void *opaque)
job->done_bitmap = bitmap_new(end);
job->before_write.notify = backup_before_write_notify;
bdrv_add_before_write_notifier(bs, &job->before_write);
-@@ -557,7 +572,9 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
+@@ -557,7 +574,9 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
BlockdevOnError on_source_error,
BlockdevOnError on_target_error,
int creation_flags,
BlockJobTxn *txn, Error **errp)
{
int64_t len;
-@@ -566,7 +583,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
+@@ -566,7 +585,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
int ret;
assert(bs);
if (bs == target) {
error_setg(errp, "Source and target cannot be the same");
-@@ -579,13 +596,13 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
+@@ -579,13 +598,13 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
return NULL;
}
error_setg(errp, "Compression is not supported for this drive %s",
bdrv_get_device_name(target));
return NULL;
-@@ -595,7 +612,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
+@@ -595,7 +614,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
return NULL;
}
return NULL;
}
-@@ -635,15 +652,18 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
+@@ -635,15 +654,18 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
goto error;
}
job->on_source_error = on_source_error;
job->on_target_error = on_target_error;
job->sync_mode = sync_mode;
-@@ -651,36 +671,44 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
+@@ -651,36 +673,44 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
sync_bitmap : NULL;
job->compress = compress;
-From 8c04a78d763014aa9efb179a451ea332cf7d5454 Mon Sep 17 00:00:00 2001
+From d48092bb9901112b3356aa8d461c45ffb4ec2b9a 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/47] backup: add pve monitor commands
-From 7a74d0bf611d5a700970ae5000235d9345104bf3 Mon Sep 17 00:00:00 2001
+From cc5b1446be5c3501881f7968edb645425db839d1 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/47] backup: vma: add dir format
---
- blockdev.c | 127 +++++++++++++++++++++++++++++++++++++++++--------------
+ blockdev.c | 137 ++++++++++++++++++++++++++++++++++++++++---------------
hmp-commands.hx | 8 ++--
hmp.c | 4 +-
qapi-schema.json | 2 +-
vma.c | 2 +-
- 5 files changed, 105 insertions(+), 38 deletions(-)
+ 5 files changed, 111 insertions(+), 42 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index 3e5c9ce..e065922 100644
+index 3e5c9ce..4958a5f 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3007,6 +3007,8 @@ typedef struct PVEBackupDevInfo {
Error *local_err = NULL;
uuid_t uuid;
VmaWriter *vmaw = NULL;
-@@ -3185,11 +3189,6 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
+@@ -3175,6 +3179,7 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
+ GList *di_list = NULL;
+ GList *l;
+ UuidInfo *uuid_info;
++ BlockJob *job;
+
+ if (backup_state.di_list) {
+ error_set(errp, ERROR_CLASS_GENERIC_ERROR,
+@@ -3185,11 +3190,6 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
/* Todo: try to auto-detect format based on file name */
format = has_format ? format : BACKUP_FORMAT_VMA;
if (has_devlist) {
devs = g_strsplit_set(devlist, ",;:", -1);
-@@ -3258,27 +3257,62 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
+@@ -3258,27 +3258,62 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
uuid_generate(uuid);
}
/* add configuration file to archive */
-@@ -3291,12 +3325,27 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
+@@ -3291,12 +3326,27 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
goto err;
}
g_free(cdata);
}
-@@ -3336,8 +3385,9 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
+@@ -3335,12 +3385,12 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
+ while (l) {
PVEBackupDevInfo *di = (PVEBackupDevInfo *)l->data;
l = g_list_next(l);
-
+-
- backup_job_create(NULL, di->bs, NULL, speed, MIRROR_SYNC_MODE_FULL, NULL,
- BLOCKDEV_ON_ERROR_REPORT, BLOCKDEV_ON_ERROR_REPORT,
-+ backup_job_create(NULL, di->bs, di->target, speed, MIRROR_SYNC_MODE_FULL, NULL,
-+ false, BLOCKDEV_ON_ERROR_REPORT, BLOCKDEV_ON_ERROR_REPORT,
-+ BLOCK_JOB_DEFAULT,
- pvebackup_dump_cb, pvebackup_complete_cb, di,
- 1, NULL, &local_err);
- if (local_err != NULL) {
-@@ -3358,8 +3408,17 @@ err:
+- pvebackup_dump_cb, pvebackup_complete_cb, di,
+- 1, NULL, &local_err);
+- if (local_err != NULL) {
++ job = backup_job_create(NULL, di->bs, di->target, speed, MIRROR_SYNC_MODE_FULL, NULL,
++ false, BLOCKDEV_ON_ERROR_REPORT, BLOCKDEV_ON_ERROR_REPORT,
++ BLOCK_JOB_DEFAULT,
++ pvebackup_dump_cb, pvebackup_complete_cb, di,
++ 1, NULL, &local_err);
++ if (!job || local_err != NULL) {
+ error_setg(&backup_state.error, "backup_job_create failed");
+ pvebackup_cancel(NULL);
+ }
+@@ -3352,14 +3402,25 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
+
+ uuid_info = g_malloc0(sizeof(*uuid_info));
+ uuid_info->UUID = g_strdup(backup_state.uuid_str);
++
++ block_job_start(job);
+ return uuid_info;
+
+ err:
l = di_list;
while (l) {
}
g_list_free(di_list);
-@@ -3373,6 +3432,10 @@ err:
+@@ -3373,6 +3434,10 @@ err:
unlink(backup_file);
}
-From 73a40d757cc27aea304115ef52e37d530ea1237e Mon Sep 17 00:00:00 2001
+From 2aa143eb4296d3dcdae3afbc9c03f8675cbdba51 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/47] backup: do not return errors in dump callback
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index e065922..7d2b76d 100644
+index 4958a5f..636e58a 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3019,6 +3019,11 @@ static int pvebackup_dump_cb(void *opaque, BlockBackend *target,
-From a67a085623f567045aaef34951227426a09238eb Mon Sep 17 00:00:00 2001
+From 0e111929cd58870a12b0e70b6e9e7478a656e725 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/47] backup: vma: correctly propagate error
3 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/blockdev.c b/blockdev.c
-index 7d2b76d..30dd870 100644
+index 636e58a..db03f8b 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3043,7 +3043,7 @@ static int pvebackup_dump_cb(void *opaque, BlockBackend *target,
-From 8f6fa3dfca3b69fdc3562fade652990eb4768a73 Mon Sep 17 00:00:00 2001
+From c46b20023cd8f9bbc29df0210287b4ec5dfe19a8 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/47] backup: vma: remove async queue
2 files changed, 38 insertions(+), 147 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index 30dd870..22b564e 100644
+index db03f8b..0c1815d 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3122,6 +3122,11 @@ static void pvebackup_cancel(void *opaque)
-From 5b7a8ffffc109f55b3e66694af49960daad4b528 Mon Sep 17 00:00:00 2001
+From 92dd1098e6b4b1284f7eec46ab57a0db4e891dc3 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/47] backup: vma: run flush inside coroutine
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git a/blockdev.c b/blockdev.c
-index 22b564e..a3203c0 100644
+index 0c1815d..d9d2b20 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3087,6 +3087,13 @@ static void pvebackup_cleanup(void)
-From 417647b8cfefa4c0653f50ddb630bbcc91a0764c Mon Sep 17 00:00:00 2001
+From e5964ad4552a4b82df55a712af93feeb3f0398ba 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/47] backup: do not use bdrv_drain_all
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index a3203c0..70f04bf 100644
+index d9d2b20..437ed57 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3135,9 +3135,6 @@ static void pvebackup_cancel(void *opaque)
-From 15215ea4cb52cf95d68063289bb185dae7de5433 Mon Sep 17 00:00:00 2001
+From 85bba03b81d637e1dca1aa404fbb627a5e581fa1 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/47] internal snapshot async
-From 2b80d33fbafd332233f0b49fe7b921d00809d8a5 Mon Sep 17 00:00:00 2001
+From 7e3d5f9b54990866923b1a0b142838bd2de487b6 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/47] backup: vma: allow empty backups
-From 3d27ec44c65694724190ef86d3e5893fafc10b59 Mon Sep 17 00:00:00 2001
+From 15ff34173785bc8cf7ffa7b8146aea46d534e004 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/47] qmp: add get_link_status
-From b4c3d5bd99807290626339b25e555a0187c195b8 Mon Sep 17 00:00:00 2001
+From f175ee758bfbe2199a17b3459ece5031b3a540c8 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/47] smm_available = false
-From a2a88a65d4c89ecc105f3eddba7ee3e8c023f16d Mon Sep 17 00:00:00 2001
+From 2873f1f9b4114aff25c61f2484b81a554fde5a9b 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/47] use whitespace between VERSION and PKGVERSION
-From f12b170f30566d50ff52ee20a2075e806c62f38e Mon Sep 17 00:00:00 2001
+From 139f49fe0cb825885fd4cddde96195d87149f07d 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/47] vma: add firewall
3 files changed, 50 insertions(+), 31 deletions(-)
diff --git a/blockdev.c b/blockdev.c
-index 70f04bf..3335a33 100644
+index 437ed57..19828de 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3163,6 +3163,44 @@ void qmp_backup_cancel(Error **errp)
bool has_devlist, const char *devlist,
bool has_speed, int64_t speed, Error **errp)
{
-@@ -3341,38 +3380,17 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
+@@ -3342,38 +3381,17 @@ UuidInfo *qmp_backup(const char *backup_file, bool has_format,
/* add configuration file to archive */
if (has_config_file) {
-From 5f0372c41d41e886e7e901cc88bc060ef565db04 Mon Sep 17 00:00:00 2001
+From 1a1312db7695f542cbd830edd9a3d1546fc32589 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/47] savevm-async: migration and bdrv_open update
-From 96d45d67af5ef5033273a39e953ac86f7e693dbb Mon Sep 17 00:00:00 2001
+From 67e4c77cf81b370c1d6f82f93e54ae2631b42027 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/47] vnc: make x509 imply tls again
-From 3eb9bb595a7ddc0ef8108f2f8cf28f4bbbf2b229 Mon Sep 17 00:00:00 2001
+From 87778e964f02be365a9e31dabb85ae1e15197b2a 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/47] PVE VNC authentication
-From 48b17fc67daf24eb83a75fd9fbc6c8b717799314 Mon Sep 17 00:00:00 2001
+From 282444f8f4dcf073017d46bd0742b947d1fbd894 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/47] vma-writer: don't bail out on zero-length files
-From 9b2434933e9a4bd411111dad716d4239e163af9e Mon Sep 17 00:00:00 2001
+From 34252ba5e295a4c1be59dc8e722a23d9c35e7d68 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/47] vma: better driver guessing for bdrv_open
-From ce85aff058a3e87030111e7c3b1a9e34fc2c7f55 Mon Sep 17 00:00:00 2001
+From 4c61486908f438cdf5833e5b9c6d6e3a8e332e7d 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/47] block: add the zeroinit block driver filter
-From 87c344c964eac376a816b081acb6796893ce0992 Mon Sep 17 00:00:00 2001
+From 75cc381c5a486241e47900eab6b0e99de7f45665 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/47] vma: add format option to device mapping
-From a072638a678b59f6c60d9542ffa7220cea493d8d Mon Sep 17 00:00:00 2001
+From d1b0367a22cb73d1a84b3eb9000bb18cedd009ac 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/47] fix possible unitialised return value
-From 7142892fdd63de719b7b2e434914314e9357ecac Mon Sep 17 00:00:00 2001
+From 0d19a91c710650ed7eb0aad9654e8d13ecf7489a 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/47] vnc: refactor to QIOChannelSocket
-From 7e3891e9d570f0c432bcfd076c17eb742e0e1350 Mon Sep 17 00:00:00 2001
+From ccba81cdfebcaa636ec3c592533b0de8a18f1b31 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/47] vma: use BlockBackend on extract
-From 8ff103236a11af9b2fa7f6df67af5383f16eb95b Mon Sep 17 00:00:00 2001
+From 27c636db09e70ea1d0ed4d21806e0206be7f208e 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/47] vma: byte based write calls
-From cff67c37625c0cbf988702ef3a69c161024eba3a Mon Sep 17 00:00:00 2001
+From 13fa6cdde41cbd856835a068bf7642d9298d23df 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/47] rbd: disable rbd_cache_writethrough_until_flush with
-From 821b6e565433da3132e6a4c69b8ce57912427f35 Mon Sep 17 00:00:00 2001
+From cbf0d2aca8df738ee33bc6287114f2324a57de2d 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/47] enable cache=unsafe for vma extract_content and
-From aa7a8a709827e37bd49c65018627799c6eced431 Mon Sep 17 00:00:00 2001
+From 98816ef75e0e2217b0d484a92519d26a776c41e4 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/47] savevm-async updates
-From ab26cbc8d8aab8ded854193994352216854904c7 Mon Sep 17 00:00:00 2001
+From 325948ca53c1fd96094f24b49e5ae415454f8947 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/47] qmp_snapshot_drive: add aiocontext
-From f51a30dbfc454e79b98c7a823db95d7b1532ea83 Mon Sep 17 00:00:00 2001
+From ccf7839947911be20b1d783c090a8af2e99908f3 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/47] vma: sizes passed to blk_co_preadv should be bytes now
-From 77846c1104d083aa09194b415b367d1b7021e4ee Mon Sep 17 00:00:00 2001
+From 2415c407a55184041415874ff84f14b583d0e766 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/47] glusterfs: no default logfile if daemonized
-From 94ca45e2ec3ae7327465d17d765e694486a08ad7 Mon Sep 17 00:00:00 2001
+From 6e77b017c725d2e42faa63228fa56c3b20e083c6 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/47] qmp_delete_drive_snapshot : add aiocontext
-From 37b358b0aa7b60c0a609e16394a89f5b3e1904f1 Mon Sep 17 00:00:00 2001
+From 9b845edfd3bd571921af56e9f4fc3f7d358049ca 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/47] convert savevm-async to threads
-From 78c0d9821117e00137f67ed8e0503094771817cd Mon Sep 17 00:00:00 2001
+From 2b93cabb41628355ef87e478ea4616e58019a85d 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/47] glusterfs: allow partial reads