]> git.proxmox.com Git - pve-qemu.git/blame - debian/patches/pve/0019-PVE-backup-modify-job-api.patch
bump version to 4.1.1-4
[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
WB
2From: Wolfgang Bumiller <w.bumiller@proxmox.com>
3Date: Wed, 9 Dec 2015 15:04:57 +0100
53e83913 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
WB
12---
13 block/backup.c | 2 ++
14 block/replication.c | 2 +-
15 blockdev.c | 4 ++--
67af0fa4 16 include/block/block_int.h | 1 +
53e83913 17 job.c | 2 +-
67af0fa4
WB
18 5 files changed, 7 insertions(+), 4 deletions(-)
19
20diff --git a/block/backup.c b/block/backup.c
91726598 21index 8761f1f9a7..30008fcc34 100644
67af0fa4
WB
22--- a/block/backup.c
23+++ b/block/backup.c
be901f66 24@@ -550,6 +550,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;
91726598 32@@ -675,6 +676,7 @@ 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);
53e83913 35 job->len = len;
0775f12b 36+ job->common.job.pause_count += pause_count;
67af0fa4
WB
37
38 return &job->common;
53e83913 39
67af0fa4 40diff --git a/block/replication.c b/block/replication.c
be901f66 41index 23b2993d74..e70a6cf2bd 100644
67af0fa4
WB
42--- a/block/replication.c
43+++ b/block/replication.c
be901f66 44@@ -546,7 +546,7 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
67af0fa4
WB
45 0, MIRROR_SYNC_MODE_NONE, NULL, false,
46 BLOCKDEV_ON_ERROR_REPORT,
53e83913 47 BLOCKDEV_ON_ERROR_REPORT, JOB_INTERNAL,
67af0fa4
WB
48- backup_job_completed, bs, NULL, &local_err);
49+ backup_job_completed, bs, 0, NULL, &local_err);
50 if (local_err) {
51 error_propagate(errp, local_err);
52 backup_job_cleanup(bs);
53diff --git a/blockdev.c b/blockdev.c
be901f66 54index 4d141e9a1f..a7c97b1585 100644
67af0fa4
WB
55--- a/blockdev.c
56+++ b/blockdev.c
be901f66 57@@ -3574,7 +3574,7 @@ static BlockJob *do_drive_backup(DriveBackup *backup, JobTxn *txn,
67af0fa4
WB
58 job = backup_job_create(backup->job_id, bs, target_bs, backup->speed,
59 backup->sync, bmap, backup->compress,
60 backup->on_source_error, backup->on_target_error,
53e83913
WB
61- job_flags, NULL, NULL, txn, &local_err);
62+ job_flags, NULL, NULL, 0, txn, &local_err);
67af0fa4
WB
63 if (local_err != NULL) {
64 error_propagate(errp, local_err);
be901f66
SR
65 goto unref;
66@@ -3679,7 +3679,7 @@ BlockJob *do_blockdev_backup(BlockdevBackup *backup, JobTxn *txn,
67af0fa4 67 job = backup_job_create(backup->job_id, bs, target_bs, backup->speed,
b855dce7 68 backup->sync, bmap, backup->compress,
67af0fa4 69 backup->on_source_error, backup->on_target_error,
53e83913
WB
70- job_flags, NULL, NULL, txn, &local_err);
71+ job_flags, NULL, NULL, 0, txn, &local_err);
67af0fa4
WB
72 if (local_err != NULL) {
73 error_propagate(errp, local_err);
74 }
67af0fa4 75diff --git a/include/block/block_int.h b/include/block/block_int.h
91726598 76index 05ee6b4866..bb2dddca83 100644
67af0fa4
WB
77--- a/include/block/block_int.h
78+++ b/include/block/block_int.h
91726598 79@@ -1173,6 +1173,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
67af0fa4
WB
80 BlockdevOnError on_target_error,
81 int creation_flags,
82 BlockCompletionFunc *cb, void *opaque,
83+ int pause_count,
53e83913 84 JobTxn *txn, Error **errp);
67af0fa4
WB
85
86 void hmp_drive_add_node(Monitor *mon, const char *optstr);
53e83913 87diff --git a/job.c b/job.c
be901f66 88index 28dd48f8a5..7a21e83780 100644
53e83913
WB
89--- a/job.c
90+++ b/job.c
be901f66 91@@ -898,7 +898,7 @@ void job_start(Job *job)
53e83913
WB
92 job->co = qemu_coroutine_create(job_co_entry, job);
93 job->pause_count--;
94 job->busy = true;
95- job->paused = false;
96+ job->paused = job->pause_count > 0;
97 job_state_transition(job, JOB_STATUS_RUNNING);
98 aio_co_enter(job->aio_context, job->co);
99 }