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, mreitz@redhat.com, jcody@redhat.com,
	famz@redhat.com, qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 02/10] mirror: Fix permission problem with 'replaces'
Date: Mon,  6 Mar 2017 17:21:54 +0100	[thread overview]
Message-ID: <1488817322-11397-3-git-send-email-kwolf@redhat.com> (raw)
In-Reply-To: <1488817322-11397-1-git-send-email-kwolf@redhat.com>

The 'replaces' option of drive-mirror can be used to mirror a Quorum
node to a new image and then let the target image replace one of the
Quorum children. In order for this graph modification to succeed, the
mirror job needs to lift its restrictions on the target node first
before actually replacing the child.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
 block/mirror.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/block/mirror.c b/block/mirror.c
index 57f26c3..c9185b3 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -509,6 +509,13 @@ static void mirror_exit(BlockJob *job, void *opaque)
      * block_job_completed(). */
     bdrv_ref(src);
     bdrv_ref(mirror_top_bs);
+    bdrv_ref(target_bs);
+
+    /* Remove target parent that still uses BLK_PERM_WRITE/RESIZE before
+     * inserting target_bs at s->to_replace, where we might not be able to get
+     * these permissions. */
+    blk_unref(s->target);
+    s->target = NULL;
 
     /* We don't access the source any more. Dropping any WRITE/RESIZE is
      * required before it could become a backing file of target_bs. */
@@ -555,8 +562,7 @@ static void mirror_exit(BlockJob *job, void *opaque)
         aio_context_release(replace_aio_context);
     }
     g_free(s->replaces);
-    blk_unref(s->target);
-    s->target = NULL;
+    bdrv_unref(target_bs);
 
     /* Remove the mirror filter driver from the graph. Before this, get rid of
      * the blockers on the intermediate nodes so that the resulting state is
-- 
1.8.3.1

  parent reply	other threads:[~2017-03-06 16:22 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-06 16:21 [Qemu-devel] [PATCH 00/10] block: Op blocker fixes Kevin Wolf
2017-03-06 16:21 ` [Qemu-devel] [PATCH 01/10] commit: Fix error handling Kevin Wolf
2017-03-06 16:44   ` Philippe Mathieu-Daudé
2017-03-06 16:21 ` Kevin Wolf [this message]
2017-03-06 20:01   ` [Qemu-devel] [PATCH 02/10] mirror: Fix permission problem with 'replaces' Eric Blake
2017-03-06 16:21 ` [Qemu-devel] [PATCH 03/10] mirror: Fix permissions for removing mirror_top_bs Kevin Wolf
2017-03-06 20:13   ` Eric Blake
2017-03-06 16:21 ` [Qemu-devel] [PATCH 04/10] mirror: Fix error path for dirty bitmap creation Kevin Wolf
2017-03-06 20:15   ` Eric Blake
2017-03-06 16:21 ` [Qemu-devel] [PATCH 05/10] block: Fix blockdev-snapshot error handling Kevin Wolf
2017-03-06 20:23   ` Eric Blake
2017-03-07 12:32     ` Kevin Wolf
2017-03-06 16:21 ` [Qemu-devel] [PATCH 06/10] block: Factor out should_update_child() Kevin Wolf
2017-03-06 20:35   ` Eric Blake
2017-03-07  0:00     ` Philippe Mathieu-Daudé
2017-03-06 16:21 ` [Qemu-devel] [PATCH 07/10] block: Factor out bdrv_replace_child_noperm() Kevin Wolf
2017-03-06 20:36   ` Eric Blake
2017-03-06 16:22 ` [Qemu-devel] [PATCH 08/10] block: Ignore multiple children in bdrv_check_update_perm() Kevin Wolf
2017-03-06 21:07   ` Eric Blake
2017-03-06 16:22 ` [Qemu-devel] [PATCH 09/10] block: Handle permission errors in change_parent_backing_link() Kevin Wolf
2017-03-06 21:19   ` Eric Blake
2017-03-06 16:22 ` [Qemu-devel] [PATCH 10/10] block: Fix error handling in bdrv_replace_in_backing_chain() Kevin Wolf
2017-03-06 21:22   ` Eric Blake
2017-03-07  9:06 ` [Qemu-devel] [PATCH 00/10] block: Op blocker fixes Fam Zheng
2017-03-07 12:36 ` Kevin Wolf

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=1488817322-11397-3-git-send-email-kwolf@redhat.com \
    --to=kwolf@redhat.com \
    --cc=famz@redhat.com \
    --cc=jcody@redhat.com \
    --cc=mreitz@redhat.com \
    --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.