[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list |
Date: |
Fri, 18 Jan 2019 13:47:49 +0000 |
18.01.2019 11:15, Vladimir Sementsov-Ogievskiy wrote:
> 17.01.2019 22:36, 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-v4
>>
>> Currently based on master.
>>
>> Since v3:
>> - 1 new patch (1/21)
>> - split old patch 15/19 into two (16,17/21)
>> - retitle two patches (git backport-diff doesn't do too well at showing
>> the diff on a retitled patch; 5,11/21)
>> - fix review comments from Rich, Vladimir
>>
>> 001/21:[down] 'iotests: Make 233 output more reliable'
>> 002/21:[----] [--] 'maint: Allow for EXAMPLES in texi2pod'
>> 003/21:[----] [--] 'qemu-nbd: Enhance man page'
>
> Interesting, I don't get it again. Searched in outlook online, I found only
> v2 of it,
> checked spam folder and filters. Magic.
>
> anyway, I can look at
> https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg04328.html
>
>
just look at it in your qemu-nbd-list-v4 tag:
> Only expose MBR partition @var{num}. Understands physical partitions
> 1-4 and logical partitions 5-8.
I'm afraid, I'm too lazy to sort out these things I don't know, so just
believe. It at least
corresponds to limits in code that it should be 1 <= partition <= 8 ;)
> @item -c, address@hidden
> Connect @var{filename} to NBD device @var{dev} (Linux only).
> @item -d, --disconnect
> Disconnect the device @var{dev} (Linux only).
Yes, and we now have clean code which establish this limitation
> @item -e, address@hidden
> Allow up to @var{num} clients to share the device (default
> @samp{1}). Safe for readers, but for now, consistency is not
> guaranteed between multiple writers.
Hmm, don't understand, why you decided to move @samp{1}). on the following
line, it looks
better as it was. And with a period it's only 69 symbols, the file have a lot
longer lines.
> Start a server listening on port 10809 that exposes only the
> guest-visible contents of a qcow2 file, with no TLS encryption, and
> with the default export name (an empty string). The command is
> one-shot, and will block until the first successful client
> disconnects:
>
> @example
> qemu-nbd -f qcow2 file.qcow2
> @end example
>
> Start a long-running server listening with encryption on port 10810,
> and require clients to have a correct X.509 certificate to connect to
> a 1 megabyte subset of a raw file, using the export name 'subset':
>
> @example
> qemu-nbd \
> --object tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/qemutls \
> --tls-creds tls0 -t -x subset -p 10810 \
> --image-opts
> driver=raw,offset=1M,length=1M,file.driver=file,file.filename=file.raw
> @end example
I don't know tls-related, the other options looks fine.
upd (decided to run the command, with dropped tls):
looks fine but not work, as s/length/size.
>
> Serve a read-only copy of just the first MBR partition of a guest
> image over a Unix socket with as many as 5 simultaneous readers, with
> a persistent process forked as a daemon:
>
> @example
> qemu-nbd --fork -t -e 5 -s /path/to/sock -p 1 -r -f qcow2 file.qcow2
> @end example
Oops. s/-s/-k/, s/-p/-P/, and idea: may be, use self-descriptive long option
names in
examples?
>
> Expose the guest-visible contents of a qcow2 file via a block device
> /dev/nbd0 (and possibly creating /dev/nbd0p1 and friends for
> partitions found within), then disconnect the device when done.
> @emph{CAUTION}: Do not use this method to mount filesystems from an
> untrusted guest image - a malicious guest may have prepared the image
> to attempt to trigger kernel bugs in partition probing or file system
> mounting.
>
> @example
should we note, that nbd kernel-module should be loaded for this to work?
> qemu-nbd -c /dev/nbd0 -f qcow2 file.qcow2
> qemu-nbd -d /dev/nbd0
> @end example
With fixed wrong option names and s/length/size:
for 03/21:
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
--
Best regards,
Vladimir
- [Qemu-devel] [PATCH v4 17/21] nbd/client: Add nbd_receive_export_list(), (continued)
- [Qemu-devel] [PATCH v4 17/21] nbd/client: Add nbd_receive_export_list(), Eric Blake, 2019/01/17
- [Qemu-devel] [PATCH v4 18/21] nbd/client: Add meta contexts to nbd_receive_export_list(), Eric Blake, 2019/01/17
- [Qemu-devel] [PATCH v4 14/21] nbd/client: Split handshake into two functions, Eric Blake, 2019/01/17
- [Qemu-devel] [PATCH v4 19/21] qemu-nbd: Add --list option, Eric Blake, 2019/01/17
- [Qemu-devel] [PATCH v4 12/21] nbd/client: Split out nbd_receive_one_meta_context(), Eric Blake, 2019/01/17
- [Qemu-devel] [PATCH v4 13/21] nbd/client: Refactor return of nbd_receive_negotiate(), Eric Blake, 2019/01/17
- [Qemu-devel] [PATCH v4 21/21] iotests: Enhance 223, 233 to cover 'qemu-nbd --list', Eric Blake, 2019/01/17
- Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list, Vladimir Sementsov-Ogievskiy, 2019/01/18
- Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list,
Vladimir Sementsov-Ogievskiy <=
- Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list, Eric Blake, 2019/01/18
- Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list, Eric Blake, 2019/01/18
- Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list, Richard W.M. Jones, 2019/01/19
- Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list, Richard W.M. Jones, 2019/01/19
- Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list, Richard W.M. Jones, 2019/01/20
Re: [Qemu-devel] [PATCH v4 00/21] nbd: add qemu-nbd --list, Eric Blake, 2019/01/18