]> git.proxmox.com Git - pve-qemu.git/blobdiff - debian/patches/pve/0056-PVE-Backup-create-jobs-correctly-cancel-in-error-sce.patch
add stable patches for 8.0.0
[pve-qemu.git] / debian / patches / pve / 0056-PVE-Backup-create-jobs-correctly-cancel-in-error-sce.patch
index ed5b013d3a853438fbe63755c24e0896514d8e74..03f6a066920b0089438b63ec378a50505dd4d330 100644 (file)
@@ -12,17 +12,19 @@ because a subsequent backup_cancel QMP call (as happens in PVE when
 the backup QMP command fails) would try to call proxmox_backup_abort()
 and run into a segfault.
 
-Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
+Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
 Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
+[FE: adapt for new job lock mechanism replacing AioContext locks]
+Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
 ---
  pve-backup.c | 10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)
 
 diff --git a/pve-backup.c b/pve-backup.c
-index f6a5f8c785..5bed6f4014 100644
+index 8a4ecba394..5eba2abde0 100644
 --- a/pve-backup.c
 +++ b/pve-backup.c
-@@ -506,6 +506,11 @@ static void create_backup_jobs_bh(void *opaque) {
+@@ -505,6 +505,11 @@ static void create_backup_jobs_bh(void *opaque) {
      }
  
      if (*errp) {
@@ -34,22 +36,21 @@ index f6a5f8c785..5bed6f4014 100644
          l = backup_state.di_list;
          while (l) {
              PVEBackupDevInfo *di = (PVEBackupDevInfo *)l->data;
-@@ -516,12 +521,12 @@ static void create_backup_jobs_bh(void *opaque) {
+@@ -515,11 +520,11 @@ static void create_backup_jobs_bh(void *opaque) {
                  di->target = NULL;
              }
  
 -            if (di->job) {
 +            if (!canceled && di->job) {
-                 AioContext *ctx = di->job->job.aio_context;
-                 aio_context_acquire(ctx);
-                 job_cancel_sync(&di->job->job, true);
--                job_unref(&di->job->job);
-                 aio_context_release(ctx);
+                 WITH_JOB_LOCK_GUARD() {
+                     job_cancel_sync_locked(&di->job->job, true);
+-                    job_unref_locked(&di->job->job);
+                 }
 +                canceled = true;
              }
          }
      }
-@@ -947,6 +952,7 @@ err:
+@@ -945,6 +950,7 @@ err:
  
      if (pbs) {
          proxmox_backup_disconnect(pbs);