]> git.proxmox.com Git - pve-qemu.git/blob - debian/patches/pve/0023-PVE-backup-modify-job-api.patch
bump version to 3.0.0-1
[pve-qemu.git] / debian / patches / pve / 0023-PVE-backup-modify-job-api.patch
1 From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2 From: Wolfgang Bumiller <w.bumiller@proxmox.com>
3 Date: Wed, 9 Dec 2015 15:04:57 +0100
4 Subject: [PATCH] PVE: backup: modify job api
5
6 Introduce a pause_count parameter to start a backup in
7 paused mode. This way backups of multiple drives can be
8 started up sequentially via the completion callback while
9 having been started at the same point in time.
10 ---
11 block/backup.c | 2 ++
12 block/replication.c | 2 +-
13 blockdev.c | 4 ++--
14 include/block/block_int.h | 1 +
15 job.c | 2 +-
16 5 files changed, 7 insertions(+), 4 deletions(-)
17
18 diff --git a/block/backup.c b/block/backup.c
19 index 8630d32926..7f970842d7 100644
20 --- a/block/backup.c
21 +++ b/block/backup.c
22 @@ -613,6 +613,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 JobTxn *txn, Error **errp)
28 {
29 int64_t len;
30 @@ -746,6 +747,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->len = len;
34 + job->common.job.pause_count = pause_count;
35
36 return &job->common;
37
38 diff --git a/block/replication.c b/block/replication.c
39 index 6349d6958e..84e07cc4d4 100644
40 --- a/block/replication.c
41 +++ b/block/replication.c
42 @@ -571,7 +571,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, 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);
51 diff --git a/blockdev.c b/blockdev.c
52 index dcf8c8d2ab..d5eb6b62ca 100644
53 --- a/blockdev.c
54 +++ b/blockdev.c
55 @@ -3568,7 +3568,7 @@ static BlockJob *do_drive_backup(DriveBackup *backup, JobTxn *txn,
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 - job_flags, NULL, NULL, txn, &local_err);
60 + job_flags, NULL, NULL, 0, txn, &local_err);
61 bdrv_unref(target_bs);
62 if (local_err != NULL) {
63 error_propagate(errp, local_err);
64 @@ -3660,7 +3660,7 @@ BlockJob *do_blockdev_backup(BlockdevBackup *backup, JobTxn *txn,
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 - job_flags, NULL, NULL, txn, &local_err);
69 + job_flags, NULL, NULL, 0, txn, &local_err);
70 if (local_err != NULL) {
71 error_propagate(errp, local_err);
72 }
73 diff --git a/include/block/block_int.h b/include/block/block_int.h
74 index 903b9c1034..0b2516c3cf 100644
75 --- a/include/block/block_int.h
76 +++ b/include/block/block_int.h
77 @@ -1083,6 +1083,7 @@ BlockJob *backup_job_create(const char *job_id, BlockDriverState *bs,
78 BlockdevOnError on_target_error,
79 int creation_flags,
80 BlockCompletionFunc *cb, void *opaque,
81 + int pause_count,
82 JobTxn *txn, Error **errp);
83
84 void hmp_drive_add_node(Monitor *mon, const char *optstr);
85 diff --git a/job.c b/job.c
86 index fa671b431a..72c50ee18e 100644
87 --- a/job.c
88 +++ b/job.c
89 @@ -557,7 +557,7 @@ void job_start(Job *job)
90 job->co = qemu_coroutine_create(job_co_entry, job);
91 job->pause_count--;
92 job->busy = true;
93 - job->paused = false;
94 + job->paused = job->pause_count > 0;
95 job_state_transition(job, JOB_STATUS_RUNNING);
96 aio_co_enter(job->aio_context, job->co);
97 }
98 --
99 2.11.0
100