qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3 00/19] nbd: add qemu-nbd --list


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [Qemu-devel] [PATCH v3 00/19] nbd: add qemu-nbd --list
Date: Mon, 14 Jan 2019 12:22:05 +0000

12.01.2019 20:57, Eric Blake wrote:
> I got tired of debugging whether a server was advertising the
> correct things during negotiation by inspecting the trace
> logs of qemu-io as client - not to mention that without SOME
> sort of client tracing particular commands, we can't easily
> regression test the server for correct behavior.  The final
> straw was at KVM Forum, when Nir asked me to make sure there
> was a way to easily determine if an NBD server is exposing what
> we really want (and fixing x-dirty-bitmap to behave saner fell
> out as a result of answering that question).
> 
> I note that upstream NBD has 'nbd-client -l $host' for querying
> just export names (with no quoting, so you have to know that
> a blank line means the default export), but it wasn't powerful
> enough, so I implemented 'qemu-nbd -L' to document everything.
> Upstream NBD has separate 'nbd-client' and 'nbd-server' binaries,
> while we only have 'qemu-nbd' (which is normally just a server,
> but 'qemu-nbd -c' also operates a second thread as a client).
> Our other uses of qemu as NBD client are for consuming a block
> device (as in qemu-io, qemu-img, or a drive to qemu) - but those
> binaries are less suited to something so specific to the NBD
> protocol.
> 
> Bonus: As a result of my work on this series, nbdkit now supports
> NBD_OPT_INFO (my interoperability testing between server
> implementations has been paying off, both at fixing server bugs,
> and at making this code more reliable across difference in valid
> servers).
> 
> Also available at:
> https://repo.or.cz/qemu/ericb.git qemu-nbd-list-v2

hmm, not -v2. But not -v3 too, as  I've tried to apply these patches on
-v3 base (commit under "maint: Allow for EXAMPLES in texi2pod") and it
failed.

Could you please fix tag?

> 
> Based-on: <address@hidden>
> [jsnow: 0/11 bitmaps: remove x- prefix from QMP api]
> Based-on: <address@hidden>
> [philmd: qemu-nbd: Rename 'exp' variable clashing with math::exp() symbol]
> Based-on: <address@hidden>
> [eblake: 0/8 Promote x-nbd-server-add-bitmap to stable]
> 
> Since v2:
> - Several patches merged already
> - 3 new patches based on audit of off_t vs. strtol
> - rebase patches on top of other changes, such as qemu-nbd --bitmap
> - address various review comments [Vladimir, Rich]
> - drop patch 12/22
> 
> 001/19:[0020] [FC] 'maint: Allow for EXAMPLES in texi2pod'
> 002/19:[0030] [FC] 'qemu-nbd: Enhance man page'
> 003/19:[down] 'qemu-nbd: Sanity check partition bounds'
> 004/19:[down] 'nbd/server: Hoist length check to qemp_nbd_server_add'
> 005/19:[down] 'nbd/server: Favor [u]int64_t over off_t'
> 006/19:[0007] [FC] 'qemu-nbd: Avoid strtol open-coding'
> 007/19:[0016] [FC] 'nbd/client: Refactor nbd_receive_list()'
> 008/19:[----] [--] 'nbd/client: Move export name into NBDExportInfo'
> 009/19:[----] [--] 'nbd/client: Change signature of 
> nbd_negotiate_simple_meta_context()'
> 010/19:[0007] [FC] 'nbd/client: Split out nbd_send_one_meta_context()'
> 011/19:[0048] [FC] 'nbd/client: Split out nbd_receive_one_meta_context()'
> 012/19:[----] [--] 'nbd/client: Refactor return of nbd_receive_negotiate()'
> 013/19:[----] [-C] 'nbd/client: Split handshake into two functions'
> 014/19:[----] [--] 'nbd/client: Pull out oldstyle size determination'
> 015/19:[0008] [FC] 'nbd/client: Add nbd_receive_export_list()'
> 016/19:[----] [-C] 'nbd/client: Add meta contexts to 
> nbd_receive_export_list()'
> 017/19:[0015] [FC] 'qemu-nbd: Add --list option'
> 018/19:[----] [--] 'nbd/client: Work around 3.0 bug for listing meta contexts'
> 019/19:[0002] [FC] 'iotests: Enhance 223, 233 to cover 'qemu-nbd --list''
> 
> Eric Blake (19):
>    maint: Allow for EXAMPLES in texi2pod
>    qemu-nbd: Enhance man page
>    qemu-nbd: Sanity check partition bounds
>    nbd/server: Hoist length check to qemp_nbd_server_add
>    nbd/server: Favor [u]int64_t over off_t
>    qemu-nbd: Avoid strtol open-coding
>    nbd/client: Refactor nbd_receive_list()
>    nbd/client: Move export name into NBDExportInfo
>    nbd/client: Change signature of nbd_negotiate_simple_meta_context()
>    nbd/client: Split out nbd_send_one_meta_context()
>    nbd/client: Split out nbd_receive_one_meta_context()
>    nbd/client: Refactor return of nbd_receive_negotiate()
>    nbd/client: Split handshake into two functions
>    nbd/client: Pull out oldstyle size determination
>    nbd/client: Add nbd_receive_export_list()
>    nbd/client: Add meta contexts to nbd_receive_export_list()
>    qemu-nbd: Add --list option
>    nbd/client: Work around 3.0 bug for listing meta contexts
>    iotests: Enhance 223, 233 to cover 'qemu-nbd --list'
> 
>   qemu-nbd.texi              | 114 ++++--
>   Makefile                   |   2 +
>   include/block/nbd.h        |  31 +-
>   block/nbd-client.c         |   9 +-
>   blockdev-nbd.c             |  10 +-
>   nbd/client.c               | 756 ++++++++++++++++++++++++++-----------
>   nbd/server.c               |  23 +-
>   qemu-nbd.c                 | 221 ++++++++---
>   nbd/trace-events           |  11 +-
>   scripts/texi2pod.pl        |   2 +-
>   tests/qemu-iotests/223     |   2 +
>   tests/qemu-iotests/223.out |  20 +
>   tests/qemu-iotests/233     |  19 +-
>   tests/qemu-iotests/233.out |  15 +
>   14 files changed, 910 insertions(+), 325 deletions(-)
> 


-- 
Best regards,
Vladimir

reply via email to

[Prev in Thread] Current Thread [Next in Thread]