[PATCH 0/5] qemu: Introduce nvme disk emulation support

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

 



From: hongleiwang <honglei.wang@xxxxxxxxxx>

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 and nvme-ns disk bus type:
A disk with nvme as bus is represented as nvme disk that contains
only one nvme namespace. 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='nvmea' bus='nvme'/>
    <serial>nvme-serial-value</serial>
  </disk>
  ...
</devices>

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>

ray (5):
  qemu: Add support for NVMe disk bus type
  qemu: Add support for NVMe namespace disk bus type
  qemu_capabilities: Add support for NVMe disk capabilities
  docs: Add NVMe and NVMe namespace disk bus types to documentation
  tests: Add test case for NVMe device configuration

 docs/formatdomain.rst                              |  5 ++-
 src/conf/domain_conf.c                             | 42 +++++++++++++++++++
 src/conf/domain_conf.h                             |  8 ++++
 src/conf/domain_postparse.c                        |  4 ++
 src/conf/domain_validate.c                         |  5 ++-
 src/conf/schemas/domaincommon.rng                  | 12 +++++-
 src/conf/virconftypes.h                            |  2 +
 src/hyperv/hyperv_driver.c                         |  4 ++
 src/qemu/qemu_alias.c                              |  2 +
 src/qemu/qemu_capabilities.c                       | 10 +++++
 src/qemu/qemu_capabilities.h                       |  2 +
 src/qemu/qemu_command.c                            | 31 ++++++++++++++
 src/qemu/qemu_domain_address.c                     | 30 +++++++++++--
 src/qemu/qemu_domain_address.h                     |  4 ++
 src/qemu/qemu_hotplug.c                            | 14 +++++++
 src/qemu/qemu_postparse.c                          |  1 +
 src/qemu/qemu_validate.c                           | 40 ++++++++++++++++++
 src/test/test_driver.c                             |  4 ++
 src/util/virutil.c                                 |  2 +-
 src/vbox/vbox_common.c                             |  3 ++
 src/vmx/vmx.c                                      |  2 +
 tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml    |  2 +
 tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml    |  2 +
 tests/domaincapsdata/qemu_10.0.0.s390x.xml         |  2 +
 tests/domaincapsdata/qemu_10.0.0.x86_64.xml        |  2 +
 tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml     |  2 +
 .../domaincapsdata/qemu_5.2.0-tcg-virt.riscv64.xml |  2 +
 tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml   |  2 +
 tests/domaincapsdata/qemu_5.2.0-virt.riscv64.xml   |  2 +
 tests/domaincapsdata/qemu_5.2.0.aarch64.xml        |  2 +
 tests/domaincapsdata/qemu_5.2.0.ppc64.xml          |  2 +
 tests/domaincapsdata/qemu_5.2.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml   |  2 +
 tests/domaincapsdata/qemu_6.0.0.aarch64.xml        |  2 +
 tests/domaincapsdata/qemu_6.0.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_6.1.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml   |  2 +
 tests/domaincapsdata/qemu_6.2.0.aarch64.xml        |  2 +
 tests/domaincapsdata/qemu_6.2.0.ppc64.xml          |  2 +
 tests/domaincapsdata/qemu_6.2.0.x86_64.xml         |  2 +
 .../domaincapsdata/qemu_7.0.0-hvf.aarch64+hvf.xml  |  2 +
 tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml   |  2 +
 tests/domaincapsdata/qemu_7.0.0.aarch64.xml        |  2 +
 tests/domaincapsdata/qemu_7.0.0.ppc64.xml          |  2 +
 tests/domaincapsdata/qemu_7.0.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_7.1.0.ppc64.xml          |  2 +
 tests/domaincapsdata/qemu_7.1.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml |  2 +
 tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml |  2 +
 tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_7.2.0.ppc.xml            |  2 +
 tests/domaincapsdata/qemu_7.2.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml     |  2 +
 .../domaincapsdata/qemu_8.0.0-tcg-virt.riscv64.xml |  2 +
 tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_8.0.0-virt.riscv64.xml   |  2 +
 tests/domaincapsdata/qemu_8.0.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_8.1.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml     |  2 +
 .../qemu_8.2.0-tcg-virt.loongarch64.xml            |  2 +
 tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml   |  2 +
 .../domaincapsdata/qemu_8.2.0-virt.loongarch64.xml |  2 +
 tests/domaincapsdata/qemu_8.2.0.aarch64.xml        |  2 +
 tests/domaincapsdata/qemu_8.2.0.armv7l.xml         |  2 +
 tests/domaincapsdata/qemu_8.2.0.s390x.xml          |  2 +
 tests/domaincapsdata/qemu_8.2.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_9.0.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml     |  2 +
 .../domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml |  2 +
 tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml   |  2 +
 tests/domaincapsdata/qemu_9.1.0.s390x.xml          |  2 +
 tests/domaincapsdata/qemu_9.1.0.x86_64.xml         |  2 +
 tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml     |  2 +
 tests/domaincapsdata/qemu_9.2.0.s390x.xml          |  2 +
 tests/domaincapsdata/qemu_9.2.0.x86_64.xml         |  2 +
 tests/qemucapabilitiesdata/caps_10.0.0_s390x.xml   |  2 +
 tests/qemucapabilitiesdata/caps_10.0.0_x86_64.xml  |  2 +
 tests/qemucapabilitiesdata/caps_5.2.0_aarch64.xml  |  2 +
 tests/qemucapabilitiesdata/caps_5.2.0_ppc64.xml    |  2 +
 tests/qemucapabilitiesdata/caps_5.2.0_riscv64.xml  |  2 +
 tests/qemucapabilitiesdata/caps_5.2.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_6.0.0_aarch64.xml  |  2 +
 tests/qemucapabilitiesdata/caps_6.0.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_6.1.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_6.2.0_aarch64.xml  |  2 +
 tests/qemucapabilitiesdata/caps_6.2.0_ppc64.xml    |  2 +
 tests/qemucapabilitiesdata/caps_6.2.0_x86_64.xml   |  2 +
 .../caps_7.0.0_aarch64+hvf.xml                     |  2 +
 tests/qemucapabilitiesdata/caps_7.0.0_aarch64.xml  |  2 +
 tests/qemucapabilitiesdata/caps_7.0.0_ppc64.xml    |  2 +
 tests/qemucapabilitiesdata/caps_7.0.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_7.1.0_ppc64.xml    |  2 +
 tests/qemucapabilitiesdata/caps_7.1.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_7.2.0_ppc.xml      |  2 +
 .../qemucapabilitiesdata/caps_7.2.0_x86_64+hvf.xml |  2 +
 tests/qemucapabilitiesdata/caps_7.2.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_8.0.0_riscv64.xml  |  2 +
 tests/qemucapabilitiesdata/caps_8.0.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_8.1.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_8.2.0_aarch64.xml  |  2 +
 tests/qemucapabilitiesdata/caps_8.2.0_armv7l.xml   |  2 +
 .../caps_8.2.0_loongarch64.xml                     |  2 +
 tests/qemucapabilitiesdata/caps_8.2.0_s390x.xml    |  2 +
 tests/qemucapabilitiesdata/caps_8.2.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_9.0.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_9.1.0_riscv64.xml  |  2 +
 tests/qemucapabilitiesdata/caps_9.1.0_s390x.xml    |  2 +
 tests/qemucapabilitiesdata/caps_9.1.0_x86_64.xml   |  2 +
 tests/qemucapabilitiesdata/caps_9.2.0_s390x.xml    |  2 +
 tests/qemucapabilitiesdata/caps_9.2.0_x86_64.xml   |  2 +
 .../disk-nvme-device.x86_64-latest.args            | 38 +++++++++++++++++
 .../disk-nvme-device.x86_64-latest.xml             | 49 ++++++++++++++++++++++
 tests/qemuxmlconfdata/disk-nvme-device.xml         | 46 ++++++++++++++++++++
 tests/qemuxmlconftest.c                            |  1 +
 133 files changed, 569 insertions(+), 8 deletions(-)
 create mode 100644 tests/qemuxmlconfdata/disk-nvme-device.x86_64-latest.args
 create mode 100644 tests/qemuxmlconfdata/disk-nvme-device.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/disk-nvme-device.xml

-- 
2.11.0



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux