From: hongleiwang <honglei.w...@smartx.com>

QEMU has supported nvme disk emulation for a long time,
see: https://qemu-project.gitlab.io/qemu/system/devices/nvme.html.

The following patches introduce nvme-ns disk bus type:
A disk with nvme-ns as bus is represented as an nvme namespace
and needs to be attached to an nvme controller. In XML, it can be
used like this:
<devices>
  ...
  <disk type='file' device='disk'>
    <driver name='qemu' type='raw'/>
    <source file='/tmp/data.img'/>
    <target dev='nvmensa' bus='nvme-ns'/>
    <address type='drive' controller='0' bus='0' target='0' unit='0'/>
  </disk>
  <controller type='nvme' index='0'>
    <serial>nvme-controller-serial-value</serial>
    <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
  </controller>
  ...
</devices>

Signed-off-by: ray <honglei.w...@smartx.com>

---
Compared to patch v1, this version removes the nvme bus type implementation
and keeps only the nvme controller + nvme-ns bus approach.

ray (5):
  qemu: Add support for NVMe namespace disk bus type
  qemu_capabilities: Add support for nvme-ns bus capabilities
  schema: Add nvme controller and nvme-ns bus defination
  tests: Add test case for nvme-ns device configuration
  NEWS: Document qemu nvme disk emulation feature

 NEWS.rst                                           | 17 +++++++++
 src/conf/domain_conf.c                             | 39 ++++++++++++++++++++
 src/conf/domain_conf.h                             |  7 ++++
 src/conf/domain_postparse.c                        |  2 ++
 src/conf/domain_validate.c                         |  4 ++-
 src/conf/schemas/domaincommon.rng                  | 11 +++++-
 src/conf/virconftypes.h                            |  2 ++
 src/hyperv/hyperv_driver.c                         |  2 ++
 src/qemu/qemu_alias.c                              |  1 +
 src/qemu/qemu_capabilities.c                       |  5 +++
 src/qemu/qemu_capabilities.h                       |  1 +
 src/qemu/qemu_command.c                            | 26 ++++++++++++++
 src/qemu/qemu_domain_address.c                     |  5 +++
 src/qemu/qemu_hotplug.c                            | 14 ++++++--
 src/qemu/qemu_postparse.c                          |  1 +
 src/qemu/qemu_validate.c                           | 18 ++++++++++
 src/test/test_driver.c                             |  2 ++
 src/util/virutil.c                                 |  2 +-
 src/vbox/vbox_common.c                             |  2 ++
 src/vmx/vmx.c                                      |  1 +
 .../qemu_10.0.0-q35.x86_64+amdsev.xml              |  1 +
 tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml    |  1 +
 .../qemu_10.0.0-tcg.x86_64+amdsev.xml              |  1 +
 tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml    |  1 +
 tests/domaincapsdata/qemu_10.0.0.s390x.xml         |  1 +
 tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml |  1 +
 tests/domaincapsdata/qemu_10.0.0.x86_64.xml        |  1 +
 tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml   |  1 +
 tests/domaincapsdata/qemu_4.2.0.aarch64.xml        |  1 +
 tests/domaincapsdata/qemu_4.2.0.ppc64.xml          |  1 +
 .../domaincapsdata/qemu_5.0.0-tcg-virt.riscv64.xml |  1 +
 tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml   |  1 +
 tests/domaincapsdata/qemu_5.0.0-virt.riscv64.xml   |  1 +
 tests/domaincapsdata/qemu_5.0.0.aarch64.xml        |  1 +
 tests/domaincapsdata/qemu_5.0.0.ppc64.xml          |  1 +
 tests/domaincapsdata/qemu_5.1.0.sparc.xml          |  1 +
 tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_6.2.0.ppc64.xml          |  1 +
 tests/domaincapsdata/qemu_6.2.0.x86_64.xml         |  1 +
 tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_7.0.0.ppc64.xml          |  1 +
 tests/domaincapsdata/qemu_7.0.0.x86_64.xml         |  1 +
 tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_7.1.0.ppc64.xml          |  1 +
 tests/domaincapsdata/qemu_7.1.0.x86_64.xml         |  1 +
 tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml |  1 +
 tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml |  1 +
 tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_7.2.0.ppc.xml            |  1 +
 tests/domaincapsdata/qemu_7.2.0.x86_64.xml         |  1 +
 tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_8.0.0.x86_64.xml         |  1 +
 tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_8.1.0.x86_64.xml         |  1 +
 tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml     |  1 +
 .../qemu_8.2.0-tcg-virt.loongarch64.xml            |  1 +
 tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml   |  1 +
 .../domaincapsdata/qemu_8.2.0-virt.loongarch64.xml |  1 +
 tests/domaincapsdata/qemu_8.2.0.aarch64.xml        |  1 +
 tests/domaincapsdata/qemu_8.2.0.armv7l.xml         |  1 +
 tests/domaincapsdata/qemu_8.2.0.s390x.xml          |  1 +
 tests/domaincapsdata/qemu_8.2.0.x86_64.xml         |  1 +
 tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_9.0.0.x86_64.xml         |  1 +
 tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml     |  1 +
 .../domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml |  1 +
 tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml   |  1 +
 tests/domaincapsdata/qemu_9.1.0.s390x.xml          |  1 +
 tests/domaincapsdata/qemu_9.1.0.x86_64.xml         |  1 +
 .../domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml  |  1 +
 .../qemu_9.2.0-q35.x86_64+amdsev.xml               |  1 +
 tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml     |  1 +
 .../qemu_9.2.0-tcg.x86_64+amdsev.xml               |  1 +
 tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml     |  1 +
 tests/domaincapsdata/qemu_9.2.0.s390x.xml          |  1 +
 tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml  |  1 +
 tests/domaincapsdata/qemu_9.2.0.x86_64.xml         |  1 +
 tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml   |  1 +
 .../caps_10.0.0_x86_64+amdsev.xml                  |  1 +
 tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml  |  1 +
 tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml    |  1 +
 tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml   |  1 +
 tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml    |  1 +
 tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml   |  1 +
 tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml    |  1 +
 tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml   |  1 +
 tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml      |  1 +
 .../qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml |  1 +
 tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml   |  1 +
 tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml   |  1 +
 tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml   |  1 +
 tests/qemucapabilitiesdata/caps_8.2.0_aarch64.xml  |  1 +
 tests/qemucapabilitiesdata/caps_8.2.0_armv7l.xml   |  1 +
 .../caps_8.2.0_loongarch64.xml                     |  1 +
 tests/qemucapabilitiesdata/caps_8.2.0_s390x.xml    |  1 +
 tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml   |  1 +
 tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml   |  1 +
 tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml  |  1 +
 tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml    |  1 +
 tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml   |  1 +
 .../caps_9.2.0_aarch64+hvf.xml                     |  1 +
 tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml    |  1 +
 .../caps_9.2.0_x86_64+amdsev.xml                   |  1 +
 tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml   |  1 +
 .../disk-nvme-ns-device.x86_64-latest.args         | 36 +++++++++++++++++++
 .../disk-nvme-ns-device.x86_64-latest.xml          | 42 ++++++++++++++++++++++
 tests/qemuxmlconfdata/disk-nvme-ns-device.xml      | 41 +++++++++++++++++++++
 tests/qemuxmlconftest.c                            |  1 +
 117 files changed, 370 insertions(+), 5 deletions(-)
 create mode 100644 tests/qemuxmlconfdata/disk-nvme-ns-device.x86_64-latest.args
 create mode 100644 tests/qemuxmlconfdata/disk-nvme-ns-device.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/disk-nvme-ns-device.xml

-- 
2.11.0

Reply via email to