From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
Kevin Wolf <kwolf@redhat.com>, Fam Zheng <famz@redhat.com>
Subject: [Qemu-devel] [PATCH v2 0/3] block/mirror: Fix target backing BDS
Date: Mon, 6 Jun 2016 16:42:09 +0200 [thread overview]
Message-ID: <20160606144212.24074-1-mreitz@redhat.com> (raw)
Issue #1: Sometimes we can have a wrong backing BDS for the target after
a mirror block job. In "existing" mode with drive-mirror, or when using
blockdev-mirror, it's generally the user's fault. In "absolute-paths"
mode this only means that after a sync=full drive-mirror, the target may
have a backing file, but this will not change its visible data, so it's
"fine".
Still, it's ugly.
Issue #2: Currently the backing chain of the target is basically opened
using bdrv_open_backing_file() (except for sometimes™). This results in
multiple BDSs for a single physical file, which is bad. In most use
cases, this is only temporary, but it still is bad.
We can just reuse the existing backing chain of the source, so we should
do so.
Patch 2 fixes the issue. Patch 1 allows change_parent_backing_link() to
replace a BDS by its immediate overlay (which is necessary so that patch
2 can set the source BDS as the backing BDS of the target (sync=none) in
mirror_complete(), i.e. before bdrv_replace_in_backing_chain() is called
in mirror_exit()).
Patch 3 adds a test.
v2:
- Move the whole logic to mirror_complete(). This has the benefit of
resolving the bdrv_open_backing_file() issue with multiple BDSs being
open for a single physical file (which is a very real issue when it
comes to image locking).
- However, this also has the drawback of requiring patch 1. So it needed
to be added.
git-backport-diff against v1:
Key:
[----] : patches are identical
[####] : number of functional differences between upstream/downstream patch
[down] : patch is downstream-only
The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively
001/3:[down] 'block: Allow replacement of a BDS by its overlay'
002/3:[0030] [FC] 'block/mirror: Fix target backing BDS'
003/3:[----] [--] 'iotests: Add test for post-mirror backing chains'
Max Reitz (3):
block: Allow replacement of a BDS by its overlay
block/mirror: Fix target backing BDS
iotests: Add test for post-mirror backing chains
block.c | 23 +++--
block/mirror.c | 21 +++--
tests/qemu-iotests/155 | 218 +++++++++++++++++++++++++++++++++++++++++++++
tests/qemu-iotests/155.out | 5 ++
tests/qemu-iotests/group | 1 +
5 files changed, 251 insertions(+), 17 deletions(-)
create mode 100755 tests/qemu-iotests/155
create mode 100644 tests/qemu-iotests/155.out
--
2.8.3
next reply other threads:[~2016-06-06 14:42 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-06 14:42 Max Reitz [this message]
2016-06-06 14:42 ` [Qemu-devel] [PATCH v2 1/3] block: Allow replacement of a BDS by its overlay Max Reitz
2016-06-08 8:58 ` Kevin Wolf
2016-06-08 14:21 ` Max Reitz
2016-06-06 14:42 ` [Qemu-devel] [PATCH v2 2/3] block/mirror: Fix target backing BDS Max Reitz
2016-06-08 9:32 ` Kevin Wolf
2016-06-08 11:28 ` Paolo Bonzini
2016-06-08 11:47 ` Kevin Wolf
2016-06-08 14:40 ` Max Reitz
2016-06-08 14:42 ` Max Reitz
2016-06-08 14:38 ` Max Reitz
2016-06-08 16:54 ` Max Reitz
2016-06-08 15:39 ` Nir Soffer
2016-06-09 8:58 ` Kevin Wolf
2016-06-09 11:16 ` Nir Soffer
2016-06-06 14:42 ` [Qemu-devel] [PATCH v2 3/3] iotests: Add test for post-mirror backing chains Max Reitz
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=20160606144212.24074-1-mreitz@redhat.com \
--to=mreitz@redhat.com \
--cc=famz@redhat.com \
--cc=kwolf@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).