qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 00/21] RFCv2: add Spice block device


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PATCH 00/21] RFCv2: add Spice block device
Date: Fri, 22 Nov 2013 14:28:51 +0100

Hi there,

Even though there is no rush to review this series, it would be nice
to get the first ~10 patches. It would make the next rebase easier,
and the review smaller.

cheers

On Mon, Nov 18, 2013 at 1:25 PM, Marc-André Lureau
<address@hidden> wrote:
> Hi,
>
> The following patch series implement a Spice block device, which
> allows the client to redirect a block device using the NBD protocol,
> which greatly simplifies the Spice code by reusing an existing
> protocol, and allows sharing existing qemu NBD implementation.
>
> The backend only support read-only device atm (although it shouldn't
> be hard to add write support if necessary)
>
> Usage with a CDROM drive:
>  -device ide-cd,drive=cd -drive if=none,id=cd,readonly,file=spicebd:
>
> The associated server and client bits are:
> http://lists.freedesktop.org/archives/spice-devel/2013-June/013608.html
> http://lists.freedesktop.org/archives/spice-devel/2013-November/015452.html
> http://lists.freedesktop.org/archives/spice-devel/2013-November/015431.html
>
> Caveats: This block device driver is a bit special, since it is
> successfully initialized with size 0, and once the client is connected
> (or want to change block device) it re-opens itself. For this to work,
> we allow a block driver to be open with an existing opaque data. We
> also save the associate device name in the block drivers.
>
> During migration, the source needs to be able to flush pending
> operations, so the Spice channel context must be in a running loop. A
> modification to the Spice server API allows to associate a particular
> channel with the AIO loop, and may be used in the future to associate
> channels with different context or athreads. However, the AIO context
> doesn't have timers yet. Since they aren't really needed for the NBD
> channel, it's not a problem. I have been told timers in AIO are on
> their way, so this could be updated later.
>
> Since the block driver state is not migrated, the destination needs to
> wait until the block driver is initialized before the VM can run. This
> is done with a simple hold count. It is also necessary to avoid extra
> media changed notifications, which is easily done by checking
> migration state.
>
>
> Marc-André Lureau (21):
>   vscclient: do not add a socket watch if there is not data to send
>   spice-char: remove unused field
>   qmp_change_blockdev() remove unused has_format
>   include: add missing config-host.h include
>   char: add qemu_chr_fe_event()
>   Split nbd block client code
>   nbd: don't change socket block during negotiate
>   nbd: pass export name as init argument
>   nbd: make session_close() idempotent
>   nbd: finish any pending coroutine
>   nbd: avoid uninitialized warnings
>   block: save the associated child name in BlockDriverState
>   blockdev: add qmp_change_blockdev_int()
>   block: extract make_snapshot() from bdrv_open()
>   block: add "snapshot.size" option to avoid extra bdrv_open()
>   block: learn to open a driver with a given opaque
>   block: allow to call bdrv_open() with an opaque
>   block: do not notify change during migration
>   sysemu: add vm_start_hold/release
>   spice-core: allow an interface to be in AIO context
>   block: add spice block device backend
>
>  block.c                   | 225 ++++++++++++-------
>  block/Makefile.objs       |   3 +-
>  block/nbd-client.c        | 384 +++++++++++++++++++++++++++++++++
>  block/nbd-client.h        |  50 +++++
>  block/nbd.c               | 380 +++-----------------------------
>  block/spicebd.c           | 536 
> ++++++++++++++++++++++++++++++++++++++++++++++
>  blockdev.c                |  24 ++-
>  hw/block/fdc.c            |   8 +-
>  hw/ide/core.c             |  12 +-
>  hw/scsi/scsi-disk.c       |  11 +-
>  hw/sd/sd.c                |   6 +-
>  include/block/block.h     |   2 +-
>  include/block/block_int.h |   1 +
>  include/sysemu/blockdev.h |   5 +-
>  include/sysemu/char.h     |  10 +
>  include/sysemu/sysemu.h   |   2 +
>  include/ui/qemu-spice.h   |   4 +-
>  libcacard/vscclient.c     |  10 +-
>  nbd.c                     |   1 -
>  qemu-char.c               |   9 +-
>  qmp.c                     |   2 +-
>  spice-qemu-char.c         |  20 +-
>  stubs/vm-stop.c           |   5 +
>  ui/spice-core.c           |  62 +++++-
>  vl.c                      |  17 ++
>  25 files changed, 1320 insertions(+), 469 deletions(-)
>  create mode 100644 block/nbd-client.c
>  create mode 100644 block/nbd-client.h
>  create mode 100644 block/spicebd.c
>
> --
> 1.8.3.1
>



-- 
Marc-André Lureau



reply via email to

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