]> git.proxmox.com Git - pve-qemu.git/commitdiff
fixup backup with io-threads
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 12 Mar 2020 09:30:18 +0000 (10:30 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 12 Mar 2020 09:30:18 +0000 (10:30 +0100)
debian/patches/pve/0026-PVE-Acquire-aio_context-before-calling-block_job_add.patch [deleted file]
debian/patches/pve/0033-PVE-Backup-aquire-aio_context-before-calling-backup_.patch [new file with mode: 0644]
debian/patches/series

diff --git a/debian/patches/pve/0026-PVE-Acquire-aio_context-before-calling-block_job_add.patch b/debian/patches/pve/0026-PVE-Acquire-aio_context-before-calling-block_job_add.patch
deleted file mode 100644 (file)
index 7f9d5a2..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Stefan Reiter <s.reiter@proxmox.com>
-Date: Tue, 10 Mar 2020 12:55:23 +0100
-Subject: [PATCH 26/32] PVE: Acquire aio_context before calling
- block_job_add_bdrv
-
-Otherwise backups immediately fail with 'permission denied' since
-_add_bdrv tries to release a lock we don't own.
-
-Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
----
- blockjob.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/blockjob.c b/blockjob.c
-index c6e20e2fcd..4e6074f18c 100644
---- a/blockjob.c
-+++ b/blockjob.c
-@@ -436,10 +436,20 @@ void *block_job_create(const char *job_id, const BlockJobDriver *driver,
-     notifier_list_add(&job->job.on_ready, &job->ready_notifier);
-     notifier_list_add(&job->job.on_idle, &job->idle_notifier);
-+    /* block_job_add_bdrv expects us to hold the aio context lock, so acquire it
-+     * before calling if we're not in the main context anyway. */
-+    if (job->job.aio_context != qemu_get_aio_context()) {
-+        aio_context_acquire(job->job.aio_context);
-+    }
-+
-     error_setg(&job->blocker, "block device is in use by block job: %s",
-                job_type_str(&job->job));
-     block_job_add_bdrv(job, "main node", bs, 0, BLK_PERM_ALL, &error_abort);
-+    if (job->job.aio_context != qemu_get_aio_context()) {
-+        aio_context_release(job->job.aio_context);
-+    }
-+
-     bdrv_op_unblock(bs, BLOCK_OP_TYPE_DATAPLANE, job->blocker);
-     /* Disable request queuing in the BlockBackend to avoid deadlocks on drain:
diff --git a/debian/patches/pve/0033-PVE-Backup-aquire-aio_context-before-calling-backup_.patch b/debian/patches/pve/0033-PVE-Backup-aquire-aio_context-before-calling-backup_.patch
new file mode 100644 (file)
index 0000000..845ee9c
--- /dev/null
@@ -0,0 +1,42 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Dietmar Maurer <dietmar@proxmox.com>
+Date: Wed, 11 Mar 2020 13:00:56 +0100
+Subject: [PATCH] PVE-Backup: aquire aio_context before calling
+ backup_job_create
+
+And do not set target in same aoi_context as source, because
+this is already done in bdrv_backup_top_append ...
+
+Signed-off-by: Dietmar Maurer <dietmar@proxmox.com>
+---
+ pve-backup.c | 8 +++-----
+ 1 file changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/pve-backup.c b/pve-backup.c
+index 9ae89fb679..38dd33e28b 100644
+--- a/pve-backup.c
++++ b/pve-backup.c
+@@ -757,17 +757,15 @@ static void coroutine_fn pvebackup_co_start(void *opaque)
+         PVEBackupDevInfo *di = (PVEBackupDevInfo *)l->data;
+         l = g_list_next(l);
+-        // make sure target runs in same aoi_context as source
+         AioContext *aio_context = bdrv_get_aio_context(di->bs);
+         aio_context_acquire(aio_context);
+-        GSList *ignore = NULL;
+-        bdrv_set_aio_context_ignore(di->target, aio_context, &ignore);
+-        g_slist_free(ignore);
+-        aio_context_release(aio_context);
+         job = backup_job_create(NULL, di->bs, di->target, backup_state.speed, MIRROR_SYNC_MODE_FULL, NULL,
+                                 BITMAP_SYNC_MODE_NEVER, false, NULL, BLOCKDEV_ON_ERROR_REPORT, BLOCKDEV_ON_ERROR_REPORT,
+                                 JOB_DEFAULT, pvebackup_complete_cb, di, 1, NULL, &local_err);
++
++        aio_context_release(aio_context);
++
+         if (!job || local_err != NULL) {
+             qemu_co_rwlock_wrlock(&backup_state.stat.rwlock);
+             error_setg(&backup_state.stat.error, "backup_job_create failed");
+-- 
+2.20.1
+
index 651c609ec01eedda73bdd55c2bb01dd116162233..0d4ca37398721241100924bdc365c4c0e6b61101 100644 (file)
@@ -23,10 +23,10 @@ pve/0022-PVE-Up-Config-file-posix-make-locking-optiono-on-cre.patch
 pve/0023-PVE-savevm-async-kick-AIO-wait-on-block-state-write.patch
 pve/0024-PVE-move-snapshot-cleanup-into-bottom-half.patch
 pve/0025-PVE-monitor-disable-oob-capability.patch
-pve/0026-PVE-Acquire-aio_context-before-calling-block_job_add.patch
 pve/0027-PVE-Compat-4.0-used-balloon-qemu-4-0-config-size-fal.patch
 pve/0028-PVE-Allow-version-code-in-machine-type.patch
 pve/0029-PVE-Backup-add-vma-backup-format-code.patch
 pve/0030-PVE-Backup-add-backup-dump-block-driver.patch
 pve/0031-PVE-Backup-proxmox-backup-patches-for-qemu.patch
 pve/0032-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch
+pve/0033-PVE-Backup-aquire-aio_context-before-calling-backup_.patch