]> git.proxmox.com Git - pve-qemu.git/blame - debian/patches/pve/0027-PVE-Backup-modify-job-api.patch
pbs-restore: be more verbose if asked to
[pve-qemu.git] / debian / patches / pve / 0027-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>
83faa3fe
TL
3Date: Mon, 6 Apr 2020 12:16:56 +0200
4Subject: [PATCH] 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
83faa3fe 21index a7a7dcaf4c..ecd93e91e0 100644
67af0fa4
WB
22--- a/block/backup.c
23+++ b/block/backup.c
83faa3fe 24@@ -338,6 +338,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;
83faa3fe 32@@ -459,6 +460,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
83faa3fe 42index da013c2041..17246a822c 100644
67af0fa4
WB
43--- a/block/replication.c
44+++ b/block/replication.c
83faa3fe 45@@ -554,7 +554,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
83faa3fe 55index 5faddaa705..65c358e4ef 100644
67af0fa4
WB
56--- a/blockdev.c
57+++ b/blockdev.c
83faa3fe 58@@ -3114,7 +3114,8 @@ static BlockJob *do_backup_common(BackupCommon *backup,
6402d961
TL
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
83faa3fe 69index 4c3587ea19..336f71e69d 100644
67af0fa4
WB
70--- a/include/block/block_int.h
71+++ b/include/block/block_int.h
83faa3fe 72@@ -1219,6 +1219,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 78
83faa3fe 79 BdrvChild *bdrv_root_attach_child(BlockDriverState *child_bs,
53e83913 80diff --git a/job.c b/job.c
83faa3fe 81index 53be57a3a0..e82253e041 100644
53e83913
WB
82--- a/job.c
83+++ b/job.c
83faa3fe 84@@ -918,7 +918,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 }