fixup backup with io-threads
This commit is contained in:
parent
c3e8606cd9
commit
20505f521e
@ -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:
|
|
42
debian/patches/pve/0033-PVE-Backup-aquire-aio_context-before-calling-backup_.patch
vendored
Normal file
42
debian/patches/pve/0033-PVE-Backup-aquire-aio_context-before-calling-backup_.patch
vendored
Normal file
@ -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
|
||||||
|
|
2
debian/patches/series
vendored
2
debian/patches/series
vendored
@ -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/0023-PVE-savevm-async-kick-AIO-wait-on-block-state-write.patch
|
||||||
pve/0024-PVE-move-snapshot-cleanup-into-bottom-half.patch
|
pve/0024-PVE-move-snapshot-cleanup-into-bottom-half.patch
|
||||||
pve/0025-PVE-monitor-disable-oob-capability.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/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/0028-PVE-Allow-version-code-in-machine-type.patch
|
||||||
pve/0029-PVE-Backup-add-vma-backup-format-code.patch
|
pve/0029-PVE-Backup-add-vma-backup-format-code.patch
|
||||||
pve/0030-PVE-Backup-add-backup-dump-block-driver.patch
|
pve/0030-PVE-Backup-add-backup-dump-block-driver.patch
|
||||||
pve/0031-PVE-Backup-proxmox-backup-patches-for-qemu.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/0032-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch
|
||||||
|
pve/0033-PVE-Backup-aquire-aio_context-before-calling-backup_.patch
|
||||||
|
Loading…
Reference in New Issue
Block a user