All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: qemu-block@nongnu.org
Cc: kwolf@redhat.com, peter.maydell@linaro.org, qemu-devel@nongnu.org
Subject: [PULL 3/7] backup: don't acquire aio_context in backup_clean
Date: Tue,  7 Apr 2020 16:26:12 +0200	[thread overview]
Message-ID: <20200407142616.7961-4-kwolf@redhat.com> (raw)
In-Reply-To: <20200407142616.7961-1-kwolf@redhat.com>

From: Stefan Reiter <s.reiter@proxmox.com>

All code-paths leading to backup_clean (via job_clean) have the job's
context already acquired. The job's context is guaranteed to be the same
as the one used by backup_top via backup_job_create.

Since the previous logic effectively acquired the lock twice, this
broke cleanup of backups for disks using IO threads, since the BDRV_POLL_WHILE
in bdrv_backup_top_drop -> bdrv_do_drained_begin would only release the lock
once, thus deadlocking with the IO thread.

This is a partial revert of 0abf2581717a19.

Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Message-Id: <20200407115651.69472-4-s.reiter@proxmox.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/backup.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/block/backup.c b/block/backup.c
index 7430ca5883..a7a7dcaf4c 100644
--- a/block/backup.c
+++ b/block/backup.c
@@ -126,11 +126,7 @@ static void backup_abort(Job *job)
 static void backup_clean(Job *job)
 {
     BackupBlockJob *s = container_of(job, BackupBlockJob, common.job);
-    AioContext *aio_context = bdrv_get_aio_context(s->backup_top);
-
-    aio_context_acquire(aio_context);
     bdrv_backup_top_drop(s->backup_top);
-    aio_context_release(aio_context);
 }
 
 void backup_do_checkpoint(BlockJob *job, Error **errp)
-- 
2.20.1



  parent reply	other threads:[~2020-04-07 14:27 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-07 14:26 [PULL 0/7] Block layer patches Kevin Wolf
2020-04-07 14:26 ` [PULL 1/7] job: take each job's lock individually in job_txn_apply Kevin Wolf
2020-04-07 14:26 ` [PULL 2/7] replication: assert we own context before job_cancel_sync Kevin Wolf
2020-04-07 14:26 ` Kevin Wolf [this message]
2020-04-07 14:26 ` [PULL 4/7] block-backend: Reorder flush/pdiscard function definitions Kevin Wolf
2020-04-07 14:26 ` [PULL 5/7] block: Increase BB.in_flight for coroutine and sync interfaces Kevin Wolf
2020-04-07 14:26 ` [PULL 6/7] block: Fix blk->in_flight during blk_wait_while_drained() Kevin Wolf
2020-04-07 14:26 ` [PULL 7/7] vpc: Don't round up already aligned BAT sizes Kevin Wolf
2020-04-07 19:54 ` [PULL 0/7] Block layer patches Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200407142616.7961-4-kwolf@redhat.com \
    --to=kwolf@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.