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>, Eric Blake <eblake@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Subject: [Qemu-devel] [PATCH v4 00/12] qapi: Allow blockdev-add for NBD
Date: Wed, 28 Sep 2016 22:55:50 +0200 [thread overview]
Message-ID: <20160928205602.17275-1-mreitz@redhat.com> (raw)
This series adds blockdev-add support for NBD clients.
Good news in v4: The total diffstat changed from 443+/98- to 407+/106-.
Bad news in v4: 10/12 patches have functional differences from v3.
Patches 1, 2, 3, and 4 are minor patches with no functional relation to
this series, other than the fact that later patches will touch the code
they touch, too.
Patch 5 prepares the code for the addition of a new option prefix, which
is "address.".
Patch 6 makes the NBD client accept a SocketAddress under the "address"
option (or rather, a flattened SocketAddress QDict with its keys
prefixed by "address."). The old options "host", "port", and "path" are
supported as legacy options and translated to the respective
SocketAddress representation.
Patch 7 drops usage of "host", "port", and "path" outside of
nbd_has_filename_options_conflict(),
nbd_process_legacy_socket_options(), and nbd_refresh_filename(), making
those options nothing but legacy.
Patch 8, the goal of this series, is again not very complicated.
Patches 9, 10, and 11 are required for the iotest added in patch 12. It
will invoke qemu-nbd, so patch 9 is required. Besides qemu-nbd, it will
launch an NBD server VM concurrently to the client VM, which is why
patch 10 is required. And finally, it will test whether we can add an
NBD BDS by passing it a file descriptor, which patch 11 is needed for
(so we use the socket_scm_helper to pass sockets to qemu).
Patch 12 then adds the iotest for NBD's blockdev-add interface.
*** This series depends on the following patches: ***
- "qdict: implement a qdict_crumple method for un-flattening a dict"
from Dan's "QAPI/QOM work for non-scalar object properties" series
- "qemu-nbd: Add --fork option" from my "iotests: Fix test 162" series
v2:
- Dropped patch 1; NBD now uses QemuOpts (as it is supposed to) for the
legacy options, therefore we cannot just rename keys in the options
QDict, so the function introduced in the old patch 1
(qdict_change_key()) becomes obsolete.
- Patch 2 (prev. 3): Rebase conflicts due to the QemuOpts change
- Patch 3 (prev. 4): QemuOpts rebase conflicts
- Patch 4 (prev. 5): QemuOpts rebase conflicts
- Patch 5 (prev. 6):
- Spell fix in the commit message
- Break if () condition more consistent with the rest of qemu [Eric]
- Patch 6:
- Merged previous patches 7 and 8 into a single one; this is because
of the next point:
- Use the QMP output visitor to generate the BDS options; this makes
the resulting code shorter and working even for other socket types
then 'unix' and 'inet' (i.e. 'fd');
for this to work, however, we have to merge said two patches because
the filename refreshing code (previously patch 7) now needs the
SocketAddress object parsed by the code previously introduced by
patch 8
(and the refreshing code needs to be there before the parsing code,
so we cannot invert the order either)
- Rebase conflicts because of the changes in patch 5
- The QemuOpts change means we can no longer just rename the legacy
options in the options QDict; instead, we have to fetch them using
the QemuOpts functions and then build a new options QDict from
scratch.
- Patch 7 (prev. 9):
- Dropped some changes that become unnecessary now that we use the QMP
output visitor for nbd_refresh_filename()
- Patch 8 (prev. 10):
- Simple rebase conflict in the QAPI schema block driver list
- Changed "Since: 2.6" to "Since: 2.8"
- Patch 9 (prev. 11):
- Some contextual rebase conflicts
- iotests.py no longer sets __all__
- Use --fork instead of a pipe to run it in the background (so we
don't have to wait an arbitrary timespan after calling the function
until the server is actually started)
- Patch 10 (prev. 12): Rebase conflicts due to the refactoring of the VM
class structure
- Patch 12 (prev. 14):
- Fixed descriptive comment (what the test does)
- blockdev-add no longer takes an @id parameter, so use @node-name
instead (and change the rest so it works)
- Pack os.remove() of socket files into a try-except block
git-backport-diff against v3:
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/12:[----] [-C] 'block/nbd: Drop trailing "." in error messages'
002/12:[0005] [FC] 'block/nbd: Reject port parameter without host'
003/12:[0031] [FC] 'block/nbd: Default port in nbd_refresh_filename()'
004/12:[0017] [FC] 'block/nbd: Use qdict_put()'
005/12:[0008] [FC] 'block/nbd: Add nbd_has_filename_options_conflict()'
006/12:[0193] [FC] 'block/nbd: Accept SocketAddress'
007/12:[0008] [FC] 'block/nbd: Use SocketAddress options'
008/12:[0010] [FC] 'qapi: Allow blockdev-add for NBD'
009/12:[0007] [FC] 'iotests.py: Add qemu_nbd function'
010/12:[0013] [FC] 'iotests.py: Allow concurrent qemu instances'
011/12:[----] [--] 'socket_scm_helper: Accept fd directly'
012/12:[0035] [FC] 'iotests: Add test for NBD's blockdev-add interface'
Max Reitz (12):
block/nbd: Drop trailing "." in error messages
block/nbd: Reject port parameter without host
block/nbd: Default port in nbd_refresh_filename()
block/nbd: Use qdict_put()
block/nbd: Add nbd_has_filename_options_conflict()
block/nbd: Accept SocketAddress
block/nbd: Use SocketAddress options
qapi: Allow blockdev-add for NBD
iotests.py: Add qemu_nbd function
iotests.py: Allow concurrent qemu instances
socket_scm_helper: Accept fd directly
iotests: Add test for NBD's blockdev-add interface
block/nbd.c | 225 ++++++++++++++++++++-------------
qapi/block-core.json | 25 +++-
tests/qemu-iotests/051.out | 4 +-
tests/qemu-iotests/051.pc.out | 4 +-
tests/qemu-iotests/147 | 201 +++++++++++++++++++++++++++++
tests/qemu-iotests/147.out | 5 +
tests/qemu-iotests/group | 1 +
tests/qemu-iotests/iotests.py | 14 +-
tests/qemu-iotests/socket_scm_helper.c | 29 +++--
9 files changed, 402 insertions(+), 106 deletions(-)
create mode 100755 tests/qemu-iotests/147
create mode 100644 tests/qemu-iotests/147.out
--
2.10.0
next reply other threads:[~2016-09-28 20:56 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-28 20:55 Max Reitz [this message]
2016-09-28 20:55 ` [Qemu-devel] [PATCH v4 01/12] block/nbd: Drop trailing "." in error messages Max Reitz
2016-09-30 17:40 ` Eric Blake
2016-10-13 11:34 ` Kevin Wolf
2016-09-28 20:55 ` [Qemu-devel] [PATCH v4 02/12] block/nbd: Reject port parameter without host Max Reitz
2016-09-30 18:44 ` Eric Blake
2016-10-13 11:34 ` Kevin Wolf
2016-09-28 20:55 ` [Qemu-devel] [PATCH v4 03/12] block/nbd: Default port in nbd_refresh_filename() Max Reitz
2016-09-30 19:28 ` Eric Blake
2016-10-13 11:35 ` Kevin Wolf
2016-09-28 20:55 ` [Qemu-devel] [PATCH v4 04/12] block/nbd: Use qdict_put() Max Reitz
2016-10-03 15:31 ` Eric Blake
2016-10-13 11:35 ` Kevin Wolf
2016-09-28 20:55 ` [Qemu-devel] [PATCH v4 05/12] block/nbd: Add nbd_has_filename_options_conflict() Max Reitz
2016-10-03 18:46 ` Eric Blake
2016-10-04 17:29 ` Max Reitz
2016-10-13 11:35 ` Kevin Wolf
2016-09-28 20:55 ` [Qemu-devel] [PATCH v4 06/12] block/nbd: Accept SocketAddress Max Reitz
2016-10-13 11:42 ` Kevin Wolf
2016-10-14 9:34 ` Ashijeet Acharya
2016-10-15 17:12 ` Max Reitz
2016-09-28 20:55 ` [Qemu-devel] [PATCH v4 07/12] block/nbd: Use SocketAddress options Max Reitz
2016-10-13 13:01 ` Kevin Wolf
2016-09-28 20:55 ` [Qemu-devel] [PATCH v4 08/12] qapi: Allow blockdev-add for NBD Max Reitz
2016-10-13 13:01 ` Kevin Wolf
2016-09-28 20:55 ` [Qemu-devel] [PATCH v4 09/12] iotests.py: Add qemu_nbd function Max Reitz
2016-10-13 13:11 ` Kevin Wolf
2016-10-15 17:17 ` Max Reitz
2016-10-17 8:33 ` Kevin Wolf
2016-09-28 20:56 ` [Qemu-devel] [PATCH v4 10/12] iotests.py: Allow concurrent qemu instances Max Reitz
2016-10-13 13:12 ` Kevin Wolf
2016-09-28 20:56 ` [Qemu-devel] [PATCH v4 11/12] socket_scm_helper: Accept fd directly Max Reitz
2016-10-13 13:12 ` Kevin Wolf
2016-09-28 20:56 ` [Qemu-devel] [PATCH v4 12/12] iotests: Add test for NBD's blockdev-add interface Max Reitz
2016-10-13 13:26 ` Kevin Wolf
2016-10-15 17:19 ` Max Reitz
2016-10-14 4:09 ` [Qemu-devel] [PATCH v4 00/12] qapi: Allow blockdev-add for NBD no-reply
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=20160928205602.17275-1-mreitz@redhat.com \
--to=mreitz@redhat.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=kwolf@redhat.com \
--cc=pbonzini@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.