[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 0/5] virtio: use alias properties in transport dev
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [RFC 0/5] virtio: use alias properties in transport devices |
Date: |
Wed, 14 May 2014 15:21:06 +0200 |
On Wed, Mar 19, 2014 at 4:48 PM, Stefan Hajnoczi <address@hidden> wrote:
> This RFC is just the beginning. The same problem exists for virtio-net and
> other devices. I am looking for feedback before I convert all of virtio.
>
> The virtio transport/device split is broken as follows:
>
> 1. The virtio-blk device is never finalized because the transport devices
> (virtio-blk-pci and friends) leak the refcount.
>
> 2. If we fix the refcount leak then we double-free the 'serial' string
> property
> upon hot unplug since its char* is copied into the virtio-blk device which
> has an identical 'serial' qdev property.
>
> This series solves both of these problems as follows:
>
> 1. Introduce a qdev child alias property that lets the transport device
> forward
> qdev property accesses into the virtio device (the child).
>
> 2. Use qdev child alias properties in transport devices, instead of keeping a
> duplicate copy of the VirtIOBlkConf struct.
>
> 3. Fix the virtio-blk device refcount leak. It's now safe to do this since
> the
> double-free has been resolved.
>
> Note about the new qdev child alias property type: I haven't made the alias
> fully transparent yet. Perhaps we should hide the alias completely?
> $ qemu-system-x86_64 -device virtio-blk-pci,\?
> ...
> virtio-blk-pci.logical_block_size=ChildAlias <--- should be uint64 or similar
>
> Stefan Hajnoczi (5):
> qdev: add child alias properties
> virtio: add child alias properties for virtio-blk
> virtio: use child aliases for virtio-blk transport properties
> virtio-blk: drop virtio_blk_set_conf()
> virtio: fix virtio-blk child refcount in transports
>
> hw/block/virtio-blk.c | 6 ------
> hw/core/qdev-properties.c | 28 ++++++++++++++++++++++++++++
> hw/s390x/s390-virtio-bus.c | 4 ++--
> hw/s390x/s390-virtio-bus.h | 1 -
> hw/s390x/virtio-ccw.c | 6 +++---
> hw/s390x/virtio-ccw.h | 1 -
> hw/virtio/virtio-pci.c | 6 +++---
> hw/virtio/virtio-pci.h | 1 -
> include/hw/block/block.h | 14 ++++++++++++++
> include/hw/qdev-properties.h | 28 ++++++++++++++++++++++++++++
> include/hw/virtio/virtio-blk.h | 17 ++++++++++++++++-
> 11 files changed, 94 insertions(+), 18 deletions(-)
Ping?
If you agree with this approach I'd like to get this code merged. We
still need to fix the other virtio devices.
Stefan
- Re: [Qemu-devel] [RFC 0/5] virtio: use alias properties in transport devices,
Stefan Hajnoczi <=