]> git.proxmox.com Git - pve-qemu.git/blame - debian/patches/pve/0026-block-backup-move-bcs-bitmap-initialization-to-job-c.patch
update submodule and patches to 7.1.0
[pve-qemu.git] / debian / patches / pve / 0026-block-backup-move-bcs-bitmap-initialization-to-job-c.patch
CommitLineData
27199bd7
FE
1From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2From: Fabian Ebner <f.ebner@proxmox.com>
3Date: Wed, 2 Mar 2022 08:35:05 +0100
4Subject: [PATCH] block/backup: move bcs bitmap initialization to job creation
5
6For backing up the state of multiple disks from the same time, a job
7for each disk has to be created. It's convenient if the jobs don't
8have to be started at the same time and if operation of the VM can be
9resumed after job creation. This would lead to a window between job
10creation and running the job, where writes can happen. But no writes
11should happen between setting up the copy-before-write filter and
12setting up the block copy state bitmap, because then new writes would
13just pass through.
14
15Commit 06e0a9c16405c0a4c1eca33cf286cc04c42066a2 moved initalization of
16the bitmap to setting up the copy-before-write filter when sync_mode
17is not MIRROR_SYNC_MODE_BITMAP. Ensure that the bitmap is initialized
18upon job creation for the remaining case too, by moving the
19backup_init_bcs_bitmap call to backup_job_create.
20
21Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
2fd4ea28 22Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
27199bd7
FE
23---
24 block/backup.c | 8 ++++----
25 1 file changed, 4 insertions(+), 4 deletions(-)
26
27diff --git a/block/backup.c b/block/backup.c
5b15e2ec 28index b2b649e305..b6fa9e8a69 100644
27199bd7
FE
29--- a/block/backup.c
30+++ b/block/backup.c
5b15e2ec
FE
31@@ -237,8 +237,8 @@ static void backup_init_bcs_bitmap(BackupBlockJob *job)
32 true);
27199bd7
FE
33 } else if (job->sync_mode == MIRROR_SYNC_MODE_TOP) {
34 /*
35- * We can't hog the coroutine to initialize this thoroughly.
36- * Set a flag and resume work when we are able to yield safely.
37+ * Initialization is costly here. Simply set a flag and let the
38+ * backup_run coroutine resume work once it can yield safely.
39 */
40 block_copy_set_skip_unallocated(job->bcs, true);
41 }
5b15e2ec 42@@ -252,8 +252,6 @@ static int coroutine_fn backup_run(Job *job, Error **errp)
27199bd7
FE
43 BackupBlockJob *s = container_of(job, BackupBlockJob, common.job);
44 int ret;
45
46- backup_init_bcs_bitmap(s);
47-
48 if (s->sync_mode == MIRROR_SYNC_MODE_TOP) {
49 int64_t offset = 0;
50 int64_t count;
5b15e2ec 51@@ -492,6 +490,8 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
27199bd7
FE
52 block_job_add_bdrv(&job->common, "target", target, 0, BLK_PERM_ALL,
53 &error_abort);
54
55+ backup_init_bcs_bitmap(job);
56+
57 return &job->common;
58
59 error: