]> git.proxmox.com Git - pve-qemu.git/blame - debian/patches/pve/0026-backup-modify-job-api.patch
bump version to 2.9.1-9
[pve-qemu.git] / debian / patches / pve / 0026-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
23102ed6 4Subject: [PATCH] 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.
10---
11 block/backup.c | 2 ++
12 block/replication.c | 2 +-
13 blockdev.c | 4 ++--
14 blockjob.c | 2 +-
15 include/block/block_int.h | 1 +
16 5 files changed, 7 insertions(+), 4 deletions(-)
17
18diff --git a/block/backup.c b/block/backup.c
19index a4fb2884f9..1ede70c061 100644
20--- a/block/backup.c
21+++ b/block/backup.c
22@@ -558,6 +558,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
23 BlockdevOnError on_target_error,
24 int creation_flags,
25 BlockCompletionFunc *cb, void *opaque,
26+ int pause_count,
27 BlockJobTxn *txn, Error **errp)
28 {
29 int64_t len;
30@@ -682,6 +683,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
31 block_job_add_bdrv(&job->common, "target", target, 0, BLK_PERM_ALL,
32 &error_abort);
33 job->common.len = len;
34+ job->common.pause_count = pause_count;
35 block_job_txn_add_job(txn, &job->common);
36
37 return &job->common;
38diff --git a/block/replication.c b/block/replication.c
39index bf3c395eb4..1c41d9e6bf 100644
40--- a/block/replication.c
41+++ b/block/replication.c
42@@ -531,7 +531,7 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
43 0, MIRROR_SYNC_MODE_NONE, NULL, false,
44 BLOCKDEV_ON_ERROR_REPORT,
45 BLOCKDEV_ON_ERROR_REPORT, BLOCK_JOB_INTERNAL,
46- backup_job_completed, bs, NULL, &local_err);
47+ backup_job_completed, bs, 0, NULL, &local_err);
48 if (local_err) {
49 error_propagate(errp, local_err);
50 backup_job_cleanup(bs);
51diff --git a/blockdev.c b/blockdev.c
ddbcf45e 52index e8a9a65167..9b6cfafd33 100644
67af0fa4
WB
53--- a/blockdev.c
54+++ b/blockdev.c
ddbcf45e 55@@ -3262,7 +3262,7 @@ static BlockJob *do_drive_backup(DriveBackup *backup, BlockJobTxn *txn,
67af0fa4
WB
56 job = backup_job_create(backup->job_id, bs, target_bs, backup->speed,
57 backup->sync, bmap, backup->compress,
58 backup->on_source_error, backup->on_target_error,
59- BLOCK_JOB_DEFAULT, NULL, NULL, txn, &local_err);
60+ BLOCK_JOB_DEFAULT, NULL, NULL, 0, txn, &local_err);
61 bdrv_unref(target_bs);
62 if (local_err != NULL) {
63 error_propagate(errp, local_err);
ddbcf45e 64@@ -3341,7 +3341,7 @@ BlockJob *do_blockdev_backup(BlockdevBackup *backup, BlockJobTxn *txn,
67af0fa4
WB
65 job = backup_job_create(backup->job_id, bs, target_bs, backup->speed,
66 backup->sync, NULL, backup->compress,
67 backup->on_source_error, backup->on_target_error,
68- BLOCK_JOB_DEFAULT, NULL, NULL, txn, &local_err);
69+ BLOCK_JOB_DEFAULT, NULL, NULL, 0, txn, &local_err);
70 if (local_err != NULL) {
71 error_propagate(errp, local_err);
72 }
73diff --git a/blockjob.c b/blockjob.c
74index 6e489327ff..764d41863e 100644
75--- a/blockjob.c
76+++ b/blockjob.c
77@@ -289,7 +289,7 @@ void block_job_start(BlockJob *job)
78 job->co = qemu_coroutine_create(block_job_co_entry, job);
79 job->pause_count--;
80 job->busy = true;
81- job->paused = false;
82+ job->paused = job->pause_count > 0;
83 bdrv_coroutine_enter(blk_bs(job->blk), job->co);
84 }
85
86diff --git a/include/block/block_int.h b/include/block/block_int.h
ddbcf45e 87index 89d7b458e7..19b84b027f 100644
67af0fa4
WB
88--- a/include/block/block_int.h
89+++ b/include/block/block_int.h
ddbcf45e 90@@ -879,6 +879,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
67af0fa4
WB
91 BlockdevOnError on_target_error,
92 int creation_flags,
93 BlockCompletionFunc *cb, void *opaque,
94+ int pause_count,
95 BlockJobTxn *txn, Error **errp);
96
97 void hmp_drive_add_node(Monitor *mon, const char *optstr);
98--
992.11.0
100