]> git.proxmox.com Git - pve-qemu.git/blame - debian/patches/pve/0019-PVE-backup-modify-job-api.patch
bump version to 4.2.0-2
[pve-qemu.git] / debian / patches / pve / 0019-PVE-backup-modify-job-api.patch
CommitLineData
23102ed6 1From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
67af0fa4 2From: Wolfgang Bumiller <w.bumiller@proxmox.com>
6402d961
TL
3Date: Tue, 10 Mar 2020 12:55:16 +0100
4Subject: [PATCH 19/32] PVE: backup: modify job api
67af0fa4
WB
5
6Introduce a pause_count parameter to start a backup in
7paused mode. This way backups of multiple drives can be
8started up sequentially via the completion callback while
9having been started at the same point in time.
b855dce7
TL
10
11Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
67af0fa4 12---
6402d961 13 block/backup.c | 3 +++
67af0fa4 14 block/replication.c | 2 +-
6402d961 15 blockdev.c | 3 ++-
67af0fa4 16 include/block/block_int.h | 1 +
53e83913 17 job.c | 2 +-
6402d961 18 5 files changed, 8 insertions(+), 3 deletions(-)
67af0fa4
WB
19
20diff --git a/block/backup.c b/block/backup.c
6402d961 21index cf62b1a38c..c155081de2 100644
67af0fa4
WB
22--- a/block/backup.c
23+++ b/block/backup.c
6402d961 24@@ -347,6 +347,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
67af0fa4
WB
25 BlockdevOnError on_target_error,
26 int creation_flags,
27 BlockCompletionFunc *cb, void *opaque,
28+ int pause_count,
53e83913 29 JobTxn *txn, Error **errp)
67af0fa4
WB
30 {
31 int64_t len;
6402d961 32@@ -468,6 +469,8 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
67af0fa4
WB
33 block_job_add_bdrv(&job->common, "target", target, 0, BLK_PERM_ALL,
34 &error_abort);
67af0fa4 35
6402d961
TL
36+ job->common.job.pause_count += pause_count;
37+
67af0fa4 38 return &job->common;
53e83913 39
6402d961 40 error:
67af0fa4 41diff --git a/block/replication.c b/block/replication.c
6402d961 42index 99532ce521..ec8de7b427 100644
67af0fa4
WB
43--- a/block/replication.c
44+++ b/block/replication.c
be901f66 45@@ -546,7 +546,7 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
6402d961 46 0, MIRROR_SYNC_MODE_NONE, NULL, 0, false, NULL,
67af0fa4 47 BLOCKDEV_ON_ERROR_REPORT,
53e83913 48 BLOCKDEV_ON_ERROR_REPORT, JOB_INTERNAL,
67af0fa4
WB
49- backup_job_completed, bs, NULL, &local_err);
50+ backup_job_completed, bs, 0, NULL, &local_err);
51 if (local_err) {
52 error_propagate(errp, local_err);
53 backup_job_cleanup(bs);
54diff --git a/blockdev.c b/blockdev.c
6402d961 55index 8e029e9c01..c7fa663ebf 100644
67af0fa4
WB
56--- a/blockdev.c
57+++ b/blockdev.c
6402d961
TL
58@@ -3583,7 +3583,8 @@ static BlockJob *do_backup_common(BackupCommon *backup,
59 backup->filter_node_name,
60 backup->on_source_error,
61 backup->on_target_error,
62- job_flags, NULL, NULL, txn, errp);
63+ job_flags, NULL, NULL, 0, txn, errp);
64+
65 return job;
66 }
67
67af0fa4 68diff --git a/include/block/block_int.h b/include/block/block_int.h
6402d961 69index dd033d0b37..b0d5eb9485 100644
67af0fa4
WB
70--- a/include/block/block_int.h
71+++ b/include/block/block_int.h
6402d961 72@@ -1215,6 +1215,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
67af0fa4
WB
73 BlockdevOnError on_target_error,
74 int creation_flags,
75 BlockCompletionFunc *cb, void *opaque,
76+ int pause_count,
53e83913 77 JobTxn *txn, Error **errp);
67af0fa4
WB
78
79 void hmp_drive_add_node(Monitor *mon, const char *optstr);
53e83913 80diff --git a/job.c b/job.c
6402d961 81index 04409b40aa..7554f735e3 100644
53e83913
WB
82--- a/job.c
83+++ b/job.c
6402d961 84@@ -888,7 +888,7 @@ void job_start(Job *job)
53e83913
WB
85 job->co = qemu_coroutine_create(job_co_entry, job);
86 job->pause_count--;
87 job->busy = true;
88- job->paused = false;
89+ job->paused = job->pause_count > 0;
90 job_state_transition(job, JOB_STATUS_RUNNING);
91 aio_co_enter(job->aio_context, job->co);
92 }