[libvirt] [PATCHv2 00/62] qemu: Add support for -blockdev

Peter Krempa pkrempa at redhat.com
Mon Aug 13 15:59:34 UTC 2018


In this version everything except blockjobs should work properly.

Similarly to the previous posting, the block job support is not part of
this posting yet so blockjobs will not work.

Changes to v1:
- Added support for floppies via -device so they work with blockdev
- fixed return value from the new media changing API
- fixed handling of the TRAY_MOVED and BLOCK_IO_ERROR events
- fixed two compilation problems with nitpicky compilers
- refactored/fixed setup of backing chain for disk media change
- fixed two regressions when filling stats hash tables without -blockdev
- fixed alias reported in the TRAY_MOVED event to the users
- added helper to retrieve a disk definition from a VM by alias or QOM path

Note that the bump of the capability data needs to be fixed since
jansson support was reverted.

For the quirks of specifying floppies via -device please refer to commit

30/62 qemu: command: Setup floppy drives via -device for blockdev

Peter Krempa (62):
  qemu: process: Fix alias for disk-tray-moved event
  tests: qemumonitorjson: Simplify debugging of 'blockInfo' test
  qemu: Improve errors in qemuDomainBlockResize
  qemu: monitor: Remove unsupported function check for 'block_resize'
  qemu: monitor: Remove useless 'locked' property from struct
    qemuDomainDiskInfo
  tests: qemucapabilities: Update capability data for qemu 3.0.0
  Revert "qemu: monitor: Add the 'query-nodes' argument for
    query-blockstats"
  qemu: hotplug: consolidate media change code paths
  qemu: hotplug: Prepare disk source in qemuDomainAttachDeviceDiskLive
  qemu: monitor: Reuse qemuMonitorJSONQueryBlock in
    qemuMonitorJSONBlockIoThrottleInfo
  qemu: monitor: Allow using 'id' instead of 'device' for
    'block_set_io_throttle'
  qemu: monitor: Allow using 'qdev' instead of 'device' for getting disk
    throttling
  qemu: monitor: Add 'nodename' argument for 'block_resize'
  tests: qemu: Drop disk from hostdev-mdev tests
  tests: qemuxml2argv: Fork CAPS_LATEST test cases for 'blockdev'
  tests: qemu: Add test data for backing chains and indexes
  qemu: hotplug: Don't generate alias when detaching disk
  util: virqemu: Simplify debugging if building QOM object with missing
    args
  qemu: caps: Add capability for using the blockdev infrastructure
  qemu: process: clear QEMU_CAPS_BLOCKDEV for VMs with SD card
  qemu: domain: Don't redetect backing chain when using -blockdev
  qemu: process: Don't detect nodenames when we support -blockdev
  conf: domain: Format out user provided backing chains in XML
  qemu: domain: Add infrastructure to generate block node names
  conf: Implement private data formatting and parsing for disks
  conf: Allow formatting and parsing of 'index' for disk source image
  qemu: Use proper backingIndex when reporting stats for backing chain
  qemu: Add field to store QDEV path of a disk in private data
  qemu: alias: Generate QDEV name of the block backend for disks
  qemu: command: Setup floppy drives via -device for blockdev
  qemu: domain: Add field for storing node name for copy-on-read
  qemu: proces: assign node names for user defined backing chains
  qemu: block: Add generator for the 'copy-on-read' blockdev driver
  qemu: domain: Prepare qemuDomainDiskGetBackendAlias for -blockdev
  qemu: command: format disk source commandline for -blockdev
  qemu: command: Add helper to check if disk throttling is enabled
  qemu: process: Setup disk io throttling for -blockdev
  qemu: driver: Use QOM backend name for disk IO throttling APIs
  qemu: driver: Prepare qemuDomainBlockResize for blockdev
  qemu: process: Add lookup via QOM id to
    qemuProcessFindDomainDiskByAlias
  qemu: monitor: Handle TRAY_MOVED event correctly with -blockdev
  qemu: monitor: Handle BLOCK_IO_ERROR event properly with -blockdev
  qemu: hotplug: Prepare for blockdev-add/blockdev-del with backing
    chains
  qemu: monitor: Add APIs for cdrom tray handling for -blockdev
  qemu: hotplug: Implement removable media change for -blockdev
  qemu: driver: Don't copy disk alias in qemuDomainBlocksStatsGather
  qemu: Explicitly find disks for stats totals
  qemu: monitor: Retrieve blockstats also by qdev and node-names
  qemu: monitor: Add APIs for refreshing disk capacity when using
    -blockdev
  qemu: driver: Don't pass 'virDomainDiskDefPtr' to
    qemuDomainGetStatsOneBlock
  qemu: monitor: Extract 'write-threshold' automatically for -blockdev
  qemu: Extract exporting of disk block statistics
  qemu: Extract exporting of the header for block stats
  qemu: Export stats relevant for the frontend separately
  qemu: Refactor control flow in qemuDomainGetStatsBlockExportDisk
  qemu: Report frontend stats only for the frontend entry
  qemu: Export stats relevant for the storage backend
  qemu: monitor: Report data also for 'qdev' entry in
    qemuMonitorJSONGetBlockInfo
  qemu: Use QOM path with query-block when using -blockdev
  qemu: driver: Allow using blockdev with qemuDomainBlocksStatsGather
  qemu: driver: Prepare qemuDomainGetStatsBlock (bulk disk stats) for
    -blockdev
  DO NOT APPLY: Enable QEMU_CAPS_BLOCKDEV if 'query-blockstats' works
    with -blockdev

 docs/formatdomain.html.in                          |   7 +-
 docs/schemas/domaincommon.rng                      |  19 +
 src/conf/domain_conf.c                             |  89 +++-
 src/conf/domain_conf.h                             |   7 +
 src/qemu/qemu_alias.c                              |  86 ++-
 src/qemu/qemu_alias.h                              |   3 +-
 src/qemu/qemu_block.c                              |  24 +-
 src/qemu/qemu_block.h                              |   2 +
 src/qemu/qemu_capabilities.c                       |   2 +
 src/qemu/qemu_capabilities.h                       |   1 +
 src/qemu/qemu_command.c                            | 134 ++++-
 src/qemu/qemu_command.h                            |   3 +
 src/qemu/qemu_domain.c                             | 174 +++++-
 src/qemu/qemu_domain.h                             |  10 +-
 src/qemu/qemu_driver.c                             | 442 ++++++++++-----
 src/qemu/qemu_hotplug.c                            | 208 ++++++--
 src/qemu/qemu_hotplug.h                            |   9 +-
 src/qemu/qemu_monitor.c                            | 104 +++-
 src/qemu/qemu_monitor.h                            |  37 +-
 src/qemu/qemu_monitor_json.c                       | 411 +++++++++++---
 src/qemu/qemu_monitor_json.h                       |  33 +-
 src/qemu/qemu_process.c                            | 138 ++++-
 src/qemu/qemu_process.h                            |   5 +-
 src/util/virqemu.c                                 |   5 +-
 .../qemucapabilitiesdata/caps_3.0.0.x86_64.replies | 591 +++------------------
 tests/qemucapabilitiesdata/caps_3.0.0.x86_64.xml   |   9 +-
 tests/qemuhotplugtest.c                            |   2 +-
 tests/qemumonitorjsontest.c                        |  34 +-
 tests/qemustatusxml2xmldata/modern-in.xml          |   6 +
 tests/qemuxml2argvdata/disk-aio.x86_64-2.12.0.args |  37 ++
 tests/qemuxml2argvdata/disk-aio.x86_64-latest.args |  19 +-
 .../disk-backing-chains-index.x86_64-2.12.0.args   |   1 +
 .../disk-backing-chains-index.x86_64-latest.args   |   1 +
 .../qemuxml2argvdata/disk-backing-chains-index.xml | 145 +++++
 .../disk-backing-chains-noindex.x86_64-2.12.0.args |  58 ++
 .../disk-backing-chains-noindex.x86_64-latest.args | 163 ++++++
 .../disk-backing-chains-noindex.xml                | 145 +++++
 .../qemuxml2argvdata/disk-cache.x86_64-2.12.0.args |  50 ++
 .../qemuxml2argvdata/disk-cache.x86_64-latest.args |  50 +-
 .../disk-cdrom-network.x86_64-2.12.0.args          |  41 ++
 .../disk-cdrom-network.x86_64-latest.args          |  32 +-
 .../disk-cdrom-tray.x86_64-2.12.0.args             |  39 ++
 .../disk-cdrom-tray.x86_64-latest.args             |  24 +-
 .../qemuxml2argvdata/disk-cdrom.x86_64-2.12.0.args |  35 ++
 .../qemuxml2argvdata/disk-cdrom.x86_64-latest.args |  17 +-
 .../disk-copy_on_read.x86_64-2.12.0.args           |  41 ++
 .../disk-copy_on_read.x86_64-latest.args           |  19 +-
 .../disk-detect-zeroes.x86_64-2.12.0.args          |  37 ++
 .../disk-detect-zeroes.x86_64-latest.args          |  17 +-
 .../disk-error-policy.x86_64-2.12.0.args           |  41 ++
 .../disk-error-policy.x86_64-latest.args           |  30 +-
 .../disk-floppy-q35-2_11.x86_64-2.12.0.args        |  35 ++
 .../disk-floppy-q35-2_11.x86_64-latest.args        |  14 +-
 .../disk-floppy-q35-2_9.x86_64-2.12.0.args         |  35 ++
 .../disk-floppy-q35-2_9.x86_64-latest.args         |  14 +-
 .../disk-floppy.x86_64-2.12.0.args                 |  35 ++
 .../disk-floppy.x86_64-latest.args                 |  21 +-
 .../disk-network-gluster.x86_64-2.12.0.args        |  44 ++
 .../disk-network-gluster.x86_64-latest.args        |  32 +-
 .../disk-network-iscsi.x86_64-2.12.0.args          |  63 +++
 .../disk-network-iscsi.x86_64-latest.args          |  58 +-
 .../disk-network-nbd.x86_64-2.12.0.args            |  46 ++
 .../disk-network-nbd.x86_64-latest.args            |  41 +-
 .../disk-network-rbd.x86_64-2.12.0.args            |  61 +++
 .../disk-network-rbd.x86_64-latest.args            |  67 ++-
 .../disk-network-sheepdog.x86_64-2.12.0.args       |  35 ++
 .../disk-network-sheepdog.x86_64-latest.args       |  16 +-
 .../disk-network-source-auth.x86_64-2.12.0.args    |  47 ++
 .../disk-network-source-auth.x86_64-latest.args    |  30 +-
 .../disk-network-tlsx509.x86_64-2.12.0.args        |  59 ++
 .../disk-network-tlsx509.x86_64-latest.args        |  61 ++-
 .../disk-readonly-disk.x86_64-2.12.0.args          |  34 ++
 .../disk-readonly-disk.x86_64-latest.args          |  14 +-
 .../disk-shared.x86_64-2.12.0.args                 |  37 ++
 .../disk-shared.x86_64-latest.args                 |  18 +-
 ...isk-virtio-scsi-reservations.x86_64-2.12.0.args |  43 ++
 ...isk-virtio-scsi-reservations.x86_64-latest.args |  20 +-
 .../floppy-drive-fat.x86_64-2.12.0.args            |  33 ++
 .../floppy-drive-fat.x86_64-latest.args            |   7 +-
 .../hostdev-mdev-display-missing-graphics.xml      |   6 -
 ...v-display-spice-egl-headless.x86_64-latest.args |   2 -
 .../hostdev-mdev-display-spice-egl-headless.xml    |   6 -
 ...ev-mdev-display-spice-opengl.x86_64-latest.args |   2 -
 .../hostdev-mdev-display-spice-opengl.xml          |   6 -
 ...dev-display-vnc-egl-headless.x86_64-latest.args |   2 -
 .../hostdev-mdev-display-vnc-egl-headless.xml      |   6 -
 .../hostdev-mdev-display-vnc.x86_64-latest.args    |   2 -
 .../qemuxml2argvdata/hostdev-mdev-display-vnc.xml  |   6 -
 tests/qemuxml2argvdata/hostdev-mdev-display.xml    |   6 -
 .../hostdev-mdev-invalid-target-address.xml        |   5 -
 .../qemuxml2argvdata/hostdev-mdev-precreated.args  |   3 -
 tests/qemuxml2argvdata/hostdev-mdev-precreated.xml |   6 -
 .../hostdev-mdev-src-address-invalid.xml           |   6 -
 tests/qemuxml2argvtest.c                           |  26 +
 .../disk-backing-chains-inactive.xml               |  35 ++
 .../disk-backing-chains-index-active.xml           | 156 ++++++
 .../disk-backing-chains-index-inactive.xml         | 156 ++++++
 .../disk-backing-chains-noindex-active.xml         | 156 ++++++
 .../disk-backing-chains-noindex-inactive.xml       | 156 ++++++
 tests/qemuxml2xmloutdata/disk-mirror-inactive.xml  |   4 +
 .../disk-mirror-old-inactive.xml                   |   4 +
 tests/qemuxml2xmloutdata/hostdev-mdev-display.xml  |   6 -
 .../qemuxml2xmloutdata/hostdev-mdev-precreated.xml |   6 -
 tests/qemuxml2xmltest.c                            |   2 +
 104 files changed, 4259 insertions(+), 1169 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/disk-aio.x86_64-2.12.0.args
 create mode 120000 tests/qemuxml2argvdata/disk-backing-chains-index.x86_64-2.12.0.args
 create mode 120000 tests/qemuxml2argvdata/disk-backing-chains-index.x86_64-latest.args
 create mode 100644 tests/qemuxml2argvdata/disk-backing-chains-index.xml
 create mode 100644 tests/qemuxml2argvdata/disk-backing-chains-noindex.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-backing-chains-noindex.x86_64-latest.args
 create mode 100644 tests/qemuxml2argvdata/disk-backing-chains-noindex.xml
 create mode 100644 tests/qemuxml2argvdata/disk-cache.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-cdrom-network.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-cdrom-tray.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-cdrom.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-copy_on_read.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-detect-zeroes.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-error-policy.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-floppy-q35-2_11.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-floppy-q35-2_9.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-floppy.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-network-gluster.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-network-iscsi.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-network-nbd.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-network-rbd.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-network-sheepdog.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-network-source-auth.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-network-tlsx509.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-readonly-disk.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-shared.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/disk-virtio-scsi-reservations.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2argvdata/floppy-drive-fat.x86_64-2.12.0.args
 create mode 100644 tests/qemuxml2xmloutdata/disk-backing-chains-index-active.xml
 create mode 100644 tests/qemuxml2xmloutdata/disk-backing-chains-index-inactive.xml
 create mode 100644 tests/qemuxml2xmloutdata/disk-backing-chains-noindex-active.xml
 create mode 100644 tests/qemuxml2xmloutdata/disk-backing-chains-noindex-inactive.xml

-- 
2.16.2




More information about the libvir-list mailing list