[libvirt] [PATCH 0/8] Add iSCSI hostdev pass-through device

John Ferlan jferlan at redhat.com
Mon Jul 21 19:21:20 UTC 2014



On 07/11/2014 08:35 AM, John Ferlan wrote:
> https://bugzilla.redhat.com/show_bug.cgi?id=957293
> 
> Allow iSCSI <hostdev/> devices to be added similarly to the existing
> <disk/> devices.  Initially do a little bit of refactoring of the
> hostdev subsys structures to make it easier to model an iSCSI hostdev
> after the SCSI scsi_host.  Although the bulk of the non-structure
> changes are "technically unnecessary", it just looked nicer to see
> {usb|pci|scsi}src rather than the longer "->source.subsys.u.{usb|pci|scsi}"
> in many places in the code.
> 
> The end result is the guest will have /dev/sdX devices created.
> 
> I have run this code through my Coverity environment and will be
> running the virttest suite over the weekend.
> 
> Patches 1-3 are repetitive moves of the various hostdev subsys types
> (USB, PCI, and SCSI) into separate typedefs and then modifying code use
> the Ptr instead of the long union path to each field.  I think I got
> most, but I'm sure there's still a few that could be cleaned up or
> that were added since I started this.
> 
> Patch 4 more or less redoes patch 3 and I suppose could be combined. I
> left it separate because it's showing the progression to patch 6. This
> patch uses 'scsihost' to reference the specific portions while still
> using 'scsisrc' to reference the shared portion (which is only sgio).
> 
> Patch 5 adds a virConnectPtr since patch 6 will need a way to get the
> secret value for the iSCSI secret/auth in qemuBuildSCSIHostdevDrvStr.
> 
> Patch 6 adds the qemu code to handle a new hostdev protocol type
> VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_ISCSI. The code will mimic the
> network disk (VIR_STORAGE_NET_PROTOCOL_ISCSI) code when making decisions.
> The new 'scsisrc' field 'protocol' will be the decision point. The
> default of VIR_DOMAIN_HOSTDEV_SCSI_PROTOCOL_TYPE_NONE was chosen
> over TYPE_SCSI_HOST. The changes were made in this order to reduce
> the size of the patch when the XML is added (patch 8). Most of the
> code was done inline using the iscsisrc->protocol (when the iSCSI code
> had nothing to do). The remaining changes refactored code into "SCSIHost" 
> and "SCSIiSCSI" to process the differences.
> 
> Patch 7 just refactors domain_conf to add what will be a common routine
> to handle the "<host/>" element network disks.  The iSCSI code will
> reuse the code to have it's own element.
> 
> Patch 8 adds the XML, schema, and updates the docs to describe the
> <hostdev/> entry as well as of course adding new tests.  The tests
> are a copy/merge of the scsi_host and network iscsi tests to define
> and describe the expected model.
> 
> John Ferlan (8):
>   hostdev: Introduce virDomainHostdevSubsysUSB
>   hostdev: Introduce virDomainHostdevSubsysPCI
>   hostdev: Introduce virDomainHostdevSubsysSCSI
>   hostdev: Introduce virDomainHostdevSubsysSCSIHost
>   Add virConnectPtr for qemuBuildSCSIHostdevDrvStr
>   hostdev: Introduce virDomainHostdevSubsysSCSIiSCSI
>   domain_conf: Common routine to handle network storage host xml def
>   hostdev: Add iSCSI hostdev XML
> 
>  docs/formatdomain.html.in                          | 142 +++++--
>  docs/schemas/domaincommon.rng                      |  46 +-
>  src/conf/domain_audit.c                            |  38 +-
>  src/conf/domain_conf.c                             | 463 +++++++++++++++------
>  src/conf/domain_conf.h                             |  80 +++-
>  src/libxl/libxl_conf.c                             |   9 +-
>  src/libxl/libxl_domain.c                           |   5 +-
>  src/libxl/libxl_driver.c                           |  34 +-
>  src/lxc/lxc_cgroup.c                               |   4 +-
>  src/lxc/lxc_controller.c                           |  10 +-
>  src/lxc/lxc_driver.c                               |  16 +-
>  src/qemu/qemu_cgroup.c                             |  69 +--
>  src/qemu/qemu_command.c                            | 158 ++++---
>  src/qemu/qemu_command.h                            |   5 +-
>  src/qemu/qemu_conf.c                               |  20 +-
>  src/qemu/qemu_driver.c                             |   6 +-
>  src/qemu/qemu_hotplug.c                            |  93 +++--
>  src/qemu/qemu_hotplug.h                            |   9 +-
>  src/security/security_apparmor.c                   |  33 +-
>  src/security/security_dac.c                        |  66 +--
>  src/security/security_selinux.c                    |  64 +--
>  src/security/virt-aa-helper.c                      |   5 +-
>  src/util/virhostdev.c                              | 295 +++++++------
>  .../qemuxml2argv-hostdev-scsi-lsi-iscsi-auth.args  |  14 +
>  .../qemuxml2argv-hostdev-scsi-lsi-iscsi-auth.xml   |  46 ++
>  .../qemuxml2argv-hostdev-scsi-lsi-iscsi.args       |  14 +
>  .../qemuxml2argv-hostdev-scsi-lsi-iscsi.xml        |  40 ++
>  ...emuxml2argv-hostdev-scsi-virtio-iscsi-auth.args |  16 +
>  ...qemuxml2argv-hostdev-scsi-virtio-iscsi-auth.xml |  46 ++
>  .../qemuxml2argv-hostdev-scsi-virtio-iscsi.args    |  16 +
>  .../qemuxml2argv-hostdev-scsi-virtio-iscsi.xml     |  40 ++
>  tests/qemuxml2argvtest.c                           |  16 +
>  tests/qemuxml2xmltest.c                            |   5 +
>  33 files changed, 1317 insertions(+), 606 deletions(-)
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-lsi-iscsi-auth.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-lsi-iscsi-auth.xml
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-lsi-iscsi.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-lsi-iscsi.xml
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-virtio-iscsi-auth.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-virtio-iscsi-auth.xml
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-virtio-iscsi.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-scsi-virtio-iscsi.xml
> 

ping?  Should I repost - using git am against top of tree will most
assuredly have conflicts...

Tks,

John




More information about the libvir-list mailing list