[libvirt] [PATCH] add support of iSER transport type in qemu with libiscsi

Charles Kelimod lichstor at gmail.com
Thu Jan 18 06:46:44 UTC 2018


Hello John,

I have questions:

>>This and the Parse makes no sense when compared to the 3 possible
options.  That is, it's possible to have "tcp", "rdma", and "iser", but
you only care about "iser".

This is because for other types are optional, there was no this line here,
therefor I added this and only care iser.

>Consider using a local @transport... I didn't check if src->hosts could
be NULL here...

This is used for iSCSI only, in this case, from my other
place modification I should make sure src->hosts won't be NULL, and can it
be local?


For those samples like "auth", I don't think those are all necessary, but
if I don't add those, the tests won't pass. Because iser is some strange,
just part of iSCSI, it is all same as iscsi except transport..

>Why do both <source> and <host> get the transport='iser'?
>From qemu command line and code architecture I believe both place are need,
do you think we should use "iser" in only source or host section? I can do
dig search.



Best Regards,
Charles.


On Wed, Jan 17, 2018 at 7:10 AM, John Ferlan <jferlan at redhat.com> wrote:

>
>
> On 01/16/2018 03:52 AM, lichstor at gmail.com wrote:
> > From: zhangshengyu <zhangshengyu at fusionstack.cn>
> >
>
> This needs to be split up better into multiple patches - there are many
> examples of how to do that. Just see how patches were done the last time
> someone added a new transport type. Typically the docs/schemas,
> src/conf, src/util, xml2xml tests would go in one patch while the
> src/qemu, xml2argv patches in a second patch.  Each patch would be
> compile-able and testable.
>
> As pointed out before, you're still not completely following the
> contributor guidelines w/r/t commit message. Furthermore, when you
> "update" your patch and post a followup version, you should make a "v2"
> or "v3" or "v4" in your header and then either in the cover letter or
> after the '---' describe what changed since the previous patch.
>
> The first patch would also need to update docs/formatdomain.html.in and
> the commit message should also describe the new XML being added - there
> are many examples.
>
> > ---
> >  docs/schemas/domaincommon.rng                      | 28 +++++++++++++
> >  src/conf/domain_conf.c                             |  8 ++++
> >  src/qemu/qemu_block.c                              | 24 ++++++++++-
> >  src/qemu/qemu_command.c                            |  3 ++
> >  src/qemu/qemu_parse_command.c                      | 10 ++++-
> >  src/storage/storage_backend_gluster.c              |  1 +
> >  src/util/virstoragefile.c                          |  3 +-
> >  src/util/virstoragefile.h                          |  1 +
> >  .../disk-drive-network-iser-auth.args              | 25 ++++++++++++
> >  .../disk-drive-network-iser-auth.xml               | 44
> ++++++++++++++++++++
> >  .../qemuargv2xmldata/disk-drive-network-iser.args  | 25 ++++++++++++
> >  tests/qemuargv2xmldata/disk-drive-network-iser.xml | 41
> +++++++++++++++++++
> >  tests/qemuargv2xmltest.c                           |  2 +
> >  ...-drive-network-iser-auth-secrettype-invalid.xml | 33 +++++++++++++++
> >  ...sk-drive-network-iser-auth-wrong-secrettype.xml | 33 +++++++++++++++
> >  .../disk-drive-network-iser-auth.args              | 31 ++++++++++++++
> >  .../disk-drive-network-iser-auth.xml               | 43
> ++++++++++++++++++++
> >  .../disk-drive-network-iser-lun.args               | 27 +++++++++++++
> >  .../disk-drive-network-iser-lun.xml                | 28 +++++++++++++
> >  .../qemuxml2argvdata/disk-drive-network-iser.args  | 29 +++++++++++++
> >  tests/qemuxml2argvdata/disk-drive-network-iser.xml | 37
> +++++++++++++++++
> >  tests/qemuxml2argvtest.c                           |  7 ++++
> >  .../disk-drive-network-iser-auth.xml               | 47
> ++++++++++++++++++++++
> >  .../qemuxml2xmloutdata/disk-drive-network-iser.xml | 41
> +++++++++++++++++++
> >  tests/qemuxml2xmltest.c                            |  2 +
> >  25 files changed, 569 insertions(+), 4 deletions(-)
> >  create mode 100644 tests/qemuargv2xmldata/disk-
> drive-network-iser-auth.args
> >  create mode 100644 tests/qemuargv2xmldata/disk-
> drive-network-iser-auth.xml
> >  create mode 100644 tests/qemuargv2xmldata/disk-drive-network-iser.args
> >  create mode 100644 tests/qemuargv2xmldata/disk-drive-network-iser.xml
> >  create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser-auth-
> secrettype-invalid.xml
> >  create mode 100644 tests/qemuxml2argvdata/disk-
> drive-network-iser-auth-wrong-secrettype.xml
> >  create mode 100644 tests/qemuxml2argvdata/disk-
> drive-network-iser-auth.args
> >  create mode 100644 tests/qemuxml2argvdata/disk-
> drive-network-iser-auth.xml
> >  create mode 100644 tests/qemuxml2argvdata/disk-
> drive-network-iser-lun.args
> >  create mode 100644 tests/qemuxml2argvdata/disk-
> drive-network-iser-lun.xml
> >  create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser.args
> >  create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser.xml
> >  create mode 100644 tests/qemuxml2xmloutdata/disk-
> drive-network-iser-auth.xml
> >  create mode 100644 tests/qemuxml2xmloutdata/disk-drive-network-iser.xml
> >
> > diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.
> rng
> > index f22c932f6..819a8791d 100644
> > --- a/docs/schemas/domaincommon.rng
> > +++ b/docs/schemas/domaincommon.rng
> > @@ -1534,6 +1534,7 @@
> >                <choice>
> >                  <value>tcp</value>
> >                  <value>rdma</value>
> > +                <value>iser</value>
>
> This is adding the attribute for the <disk> <source> <host>, so why is
> it also necessary on the <source ...> line after protocol...
>
> >                </choice>
> >              </attribute>
> >            </optional>
> > @@ -1613,6 +1614,15 @@
> >        <optional>
> >          <ref name="encryption"/>
> >        </optional>
> > +      <optional>
>
> So this is the <disk> <source> transport attribute?
>
> > +        <attribute name="transport">
> > +          <choice>
> > +            <value>tcp</value>
> > +            <value>rdma</value>
> > +            <value>iser</value>
> > +          </choice>
> > +        </attribute>
>
> Furthermore, if it must be kept here, then since the <attribute>
> sequence is repeated 3 times, may as well make a definition for it and
> then use it everywhere rather than cut-copy-paste in each place.
>
>
> > +      </optional>
> >      </element>
> >    </define>
> >
> > @@ -4386,6 +4396,15 @@
> >            <attribute name="name">
> >              <text/>
> >            </attribute>
> > +          <optional>
> > +            <attribute name="transport">
>
> This is the <hostdev> <source>, but I don't believe that it's actually
> tested as there's no XML that I see...  I also didn't check to see
> whether you parsed and formatted both <disk> and <hostdev> in
> domain_conf...
>
>
> > +              <choice>
> > +                <value>tcp</value>
> > +                <value>rdma</value>
> > +                <value>iser</value>
> > +              </choice>
> > +            </attribute>
> > +          </optional>
> >            <interleave>
> >              <oneOrMore>
> >                <element name='host'>
> > @@ -4397,6 +4416,15 @@
> >                      <ref name="PortNumber"/>
> >                    </attribute>
> >                  </optional>
> > +                <optional>
> > +                  <attribute name="transport">
>
> And this is for the <hostdev> <source> <host>
>
> > +                    <choice>
> > +                      <value>tcp</value>
> > +                      <value>rdma</value>
> > +                      <value>iser</value>
> > +                    </choice>
> > +                  </attribute>
> > +                </optional>
> >                  <empty/>
> >                </element>
> >              </oneOrMore>
> > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> > index a1c25060f..8aa193ac2 100644
> > --- a/src/conf/domain_conf.c
> > +++ b/src/conf/domain_conf.c
> > @@ -7075,6 +7075,7 @@ virDomainStorageNetworkParseHosts(xmlNodePtr node,
> >                                    virStorageNetHostDefPtr *hosts,
> >                                    size_t *nhosts)
> >  {
> > +    char *transport = NULL;
> >      xmlNodePtr child;
> >
> >      for (child = node->children; child; child = child->next) {
> > @@ -7086,6 +7087,9 @@ virDomainStorageNetworkParseHosts(xmlNodePtr node,
> >          }
> >      }
> >
> > +    if ((*hosts) && (transport = virXMLPropString(node, "transport")))
> > +        (*hosts)->transport = virStorageNetHostTransportType
> FromString(transport);
> > +
>
> @transport is leaked
>
> Why only parsed for "<host>" but the RNG has <source> and <host>?
>
> >      return 0;
> >  }
> >
> > @@ -8490,6 +8494,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
> >      if (virDomainStorageNetworkParseHosts(node, &src->hosts,
> &src->nhosts) < 0)
> >          goto cleanup;
> >
> > +
>
> extraneous blank line
>
> >      virStorageSourceNetworkAssignDefaultPorts(src);
> >
> >      ret = 0;
> > @@ -22371,6 +22376,9 @@ virDomainDiskSourceFormatNetwork(virBufferPtr
> attrBuf,
> >
> >      VIR_FREE(path);
> >
> > +    if (src->hosts && src->hosts->transport ==
> VIR_STORAGE_NET_HOST_TRANS_ISER)
> > +        virBufferEscapeString(attrBuf, " transport='%s'", "iser");
> > +
>
> The virStorageNetHostTransportTypeToString should be used and not "iser"
> directly.
>
> This and the Parse makes no sense when compared to the 3 possible
> options.  That is, it's possible to have "tcp", "rdma", and "iser", but
> you only care about "iser".
>
> >      if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&
> >          !(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE &&
> >            src->tlsFromConfig))
> > diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
> > index 585f0255e..49837205f 100644
> > --- a/src/qemu/qemu_block.c
> > +++ b/src/qemu/qemu_block.c
> > @@ -433,6 +433,12 @@ qemuBlockStorageSourceGetURI(virStorageSourcePtr
> src)
> >          if (VIR_STRDUP(uri->scheme,
> >                         virStorageNetProtocolTypeToString(src->protocol))
> < 0)
> >              goto cleanup;
> > +    } else if (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_ISER)
> {
> > +        uri->port = src->hosts->port;
> > +
> > +        if (VIR_STRDUP(uri->scheme,
> > +                       virStorageNetHostTransportType
> ToString(src->hosts->transport)) < 0)
> > +            goto cleanup;
> >      } else {
> >          if (virAsprintf(&uri->scheme, "%s+%s",
> >                          virStorageNetProtocolTypeToStr
> ing(src->protocol),
> > @@ -506,6 +512,19 @@ qemuBlockStorageSourceBuildJSONSocketAddress(virStorageNetHostDefPtr
> host,
> >              goto cleanup;
> >          break;
> >
> > +    case VIR_STORAGE_NET_HOST_TRANS_ISER:
> > +        transport = "iser";
>
> again TypeToString should be used...
>
> > +        if (virAsprintf(&port, "%u", host->port) < 0)
> > +            goto cleanup;
> > +
> > +        if (virJSONValueObjectCreate(&server,
> > +                                     "s:type", transport,
> > +                                     "s:host", host->name,
> > +                                     "s:port", port,
> > +                                     NULL) < 0)
> > +            goto cleanup;
> > +        break;
> > +
> >      case VIR_STORAGE_NET_HOST_TRANS_UNIX:
> >          if (virJSONValueObjectCreate(&server,
> >                                       "s:type", "unix",
> > @@ -590,7 +609,8 @@ qemuBlockStorageSourceBuildJSONInetSocketAddress(virStorageNetHostDefPtr
> host)
> >      virJSONValuePtr ret = NULL;
> >      char *port = NULL;
> >
> > -    if (host->transport != VIR_STORAGE_NET_HOST_TRANS_TCP) {
> > +    if (host->transport != VIR_STORAGE_NET_HOST_TRANS_TCP &&
> > +        host->transport != VIR_STORAGE_NET_HOST_TRANS_ISER) {
> >          virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> >                         _("only TCP protocol can be converted to
> InetSocketAddress"));
>
> This doesn't make sense - the error message doesn't match the if
> conditions.  Check your usage of && to considering what the other
> options are and what's being checked here.
>
> >          return NULL;
> > @@ -831,7 +851,7 @@ qemuBlockStorageSourceGetISCSIProps(virStorageSourcePtr
> src)
> >                                            "s:portal", portal,
> >                                            "s:target", target,
> >                                            "u:lun", lun,
> > -                                          "s:transport", "tcp",
> > +                                          "s:transport",
> virStorageNetHostTransportTypeToString(src->hosts->transport),
>
> Consider using a local @transport... I didn't check if src->hosts could
> be NULL here...
>
> >                                            "S:user", username,
> >                                            "S:password-secret", objalias,
> >                                            NULL));
> > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> > index b8aede32d..dd6e3be9a 100644
> > --- a/src/qemu/qemu_command.c
> > +++ b/src/qemu/qemu_command.c
> > @@ -883,6 +883,8 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src,
> >              if (!((src->hosts->name && strchr(src->hosts->name, ':')) ||
> >                    (src->hosts->transport ==
> VIR_STORAGE_NET_HOST_TRANS_TCP &&
> >                     !src->hosts->name) ||
> > +                  (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_ISER
> &&
> > +                   !src->hosts->name) ||
> >                    (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_UNIX
> &&
> >                     src->hosts->socket &&
> >                     src->hosts->socket[0] != '/'))) {
> > @@ -891,6 +893,7 @@ qemuBuildNetworkDriveStr(virStorageSourcePtr src,
> >
> >                  switch (src->hosts->transport) {
> >                  case VIR_STORAGE_NET_HOST_TRANS_TCP:
> > +                case VIR_STORAGE_NET_HOST_TRANS_ISER:
> >                      virBufferAsprintf(&buf, "%s:%u",
> >                                        src->hosts->name,
> src->hosts->port);
> >                      break;
> > diff --git a/src/qemu/qemu_parse_command.c
> b/src/qemu/qemu_parse_command.c
> > index 5fe3f97d0..d376af208 100644
> > --- a/src/qemu/qemu_parse_command.c
> > +++ b/src/qemu/qemu_parse_command.c
> > @@ -70,7 +70,9 @@ qemuParseDriveURIString(virDomainDiskDefPtr def,
> virURIPtr uri,
> >      if (transp)
> >          *transp++ = 0;
> >
> > -    if (STRNEQ(uri->scheme, scheme)) {
> > +    if (STREQ(uri->scheme, "iser")) {
> > +        transp = (char *)"iser";
>
> <sigh>
>
> At least you attempted the parse code - it's largely forgotten.
>
> > +    } else if (STRNEQ(uri->scheme, scheme)) {
> >          virReportError(VIR_ERR_INTERNAL_ERROR,
> >                         _("Invalid transport/scheme '%s'"), uri->scheme);
> >          goto error;
> > @@ -709,6 +711,12 @@ qemuParseCommandLineDisk(virDomainXMLOptionPtr
> xmlopt,
> >
> >                      if (qemuParseISCSIString(def) < 0)
> >                          goto error;
> > +                } else if (STRPREFIX(def->src->path, "iser:")) {
> > +                    def->src->type = VIR_STORAGE_TYPE_NETWORK;
> > +                    def->src->protocol = VIR_STORAGE_NET_PROTOCOL_
> ISCSI;
> > +
> > +                    if (qemuParseISCSIString(def) < 0)
> > +                        goto error;
> >                  } else if (STRPREFIX(def->src->path, "sheepdog:")) {
> >                      char *p = def->src->path;
> >                      char *port, *vdi;
> > diff --git a/src/storage/storage_backend_gluster.c
> b/src/storage/storage_backend_gluster.c
> > index 5eea84f16..1452fa0cd 100644
> > --- a/src/storage/storage_backend_gluster.c
> > +++ b/src/storage/storage_backend_gluster.c
> > @@ -608,6 +608,7 @@ virStorageFileBackendGlusterInitServer(
> virStorageFileBackendGlusterPrivPtr priv,
> >          hoststr = host->socket;
> >          break;
> >
> > +    case VIR_STORAGE_NET_HOST_TRANS_ISER:
> >      case VIR_STORAGE_NET_HOST_TRANS_LAST:
> >          break;
> >      }
> > diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
> > index 5780180a9..63253a9c4 100644
> > --- a/src/util/virstoragefile.c
> > +++ b/src/util/virstoragefile.c
> > @@ -92,7 +92,8 @@ VIR_ENUM_IMPL(virStorageNetProtocol,
> VIR_STORAGE_NET_PROTOCOL_LAST,
> >  VIR_ENUM_IMPL(virStorageNetHostTransport, VIR_STORAGE_NET_HOST_TRANS_
> LAST,
> >                "tcp",
> >                "unix",
> > -              "rdma")
> > +              "rdma",
> > +              "iser")
> >
> >  VIR_ENUM_IMPL(virStorageSourcePoolMode,
> >                VIR_STORAGE_SOURCE_POOL_MODE_LAST,
> > diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
> > index ecd806c93..5a6ec7776 100644
> > --- a/src/util/virstoragefile.h
> > +++ b/src/util/virstoragefile.h
> > @@ -147,6 +147,7 @@ typedef enum {
> >      VIR_STORAGE_NET_HOST_TRANS_TCP,
> >      VIR_STORAGE_NET_HOST_TRANS_UNIX,
> >      VIR_STORAGE_NET_HOST_TRANS_RDMA,
> > +    VIR_STORAGE_NET_HOST_TRANS_ISER,
> >
> >      VIR_STORAGE_NET_HOST_TRANS_LAST
> >  } virStorageNetHostTransport;
> > diff --git a/tests/qemuargv2xmldata/disk-drive-network-iser-auth.args
> b/tests/qemuargv2xmldata/disk-drive-network-iser-auth.args
> > new file mode 100644
> > index 000000000..aaf10d8c8
> > --- /dev/null
> > +++ b/tests/qemuargv2xmldata/disk-drive-network-iser-auth.args
> > @@ -0,0 +1,25 @@
> > +LC_ALL=C \
> > +PATH=/bin \
> > +HOME=/home/test \
> > +USER=test \
> > +LOGNAME=test \
> > +QEMU_AUDIO_DRV=none \
> > +/usr/bin/qemu-system-i686 \
> > +-name QEMUGuest1 \
> > +-S \
> > +-M pc \
> > +-m 214 \
> > +-smp 1 \
> > +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
> > +-nographic \
> > +-monitor unix:/tmp/test-monitor,server,nowait \
> > +-no-acpi \
> > +-boot c \
> > +-usb \
> > +-drive file=iser://myname:AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+
> HOBlMQ1A at example.org:\
> > +6000/iqn.1992-01.com.example%3Astorage/1,format=raw,if=virtio \
> > +-drive file=iser://example.org:6000/iqn.1992-01.com.example%
> 3Astorage/2,\
> > +format=raw,if=virtio \
> > +-net none \
> > +-serial none \
> > +-parallel none
> > diff --git a/tests/qemuargv2xmldata/disk-drive-network-iser-auth.xml
> b/tests/qemuargv2xmldata/disk-drive-network-iser-auth.xml
> > new file mode 100644
> > index 000000000..7226443fb
> > --- /dev/null
> > +++ b/tests/qemuargv2xmldata/disk-drive-network-iser-auth.xml
> > @@ -0,0 +1,44 @@
> > +<domain type='qemu'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219136</memory>
> > +  <currentMemory unit='KiB'>219136</currentMemory>
> > +  <vcpu placement='static'>1</vcpu>
> > +  <os>
> > +    <type arch='i686' machine='pc'>hvm</type>
> > +    <boot dev='hd'/>
> > +  </os>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +    <emulator>/usr/bin/qemu-system-i686</emulator>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <auth username='myname'>
> > +        <secret type='iscsi' usage='qemuargv2xml_usage'/>
> > +      </auth>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
>
> Why do both <source> and <host> get the transport='iser'?
>
> Since patches weren't well formed, I didn't dig in too deep into
> checking what you've done vs. how it should be done.
>
> Does "auth" really have any bearing here? That is, is it really
> necessary to supply both two tests where one only adds auth that has
> nothing to do with iser transport?
>
> John
>
> > +      </source>
> > +      <target dev='vda' bus='virtio'/>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
> function='0x0'/>
> > +    </disk>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example:storage/2'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vdb' bus='virtio'/>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
> > +    </disk>
> > +    <controller type='usb' index='0'>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
> function='0x2'/>
> > +    </controller>
> > +    <controller type='pci' index='0' model='pci-root'/>
> > +    <input type='mouse' bus='ps2'/>
> > +    <input type='keyboard' bus='ps2'/>
> > +    <memballoon model='none'/>
> > +  </devices>
> > +</domain>
> > diff --git a/tests/qemuargv2xmldata/disk-drive-network-iser.args
> b/tests/qemuargv2xmldata/disk-drive-network-iser.args
> > new file mode 100644
> > index 000000000..c476e759e
> > --- /dev/null
> > +++ b/tests/qemuargv2xmldata/disk-drive-network-iser.args
> > @@ -0,0 +1,25 @@
> > +LC_ALL=C \
> > +PATH=/bin \
> > +HOME=/home/test \
> > +USER=test \
> > +LOGNAME=test \
> > +QEMU_AUDIO_DRV=none \
> > +/usr/bin/qemu-system-i686 \
> > +-name QEMUGuest1 \
> > +-S \
> > +-M pc \
> > +-m 214 \
> > +-smp 1 \
> > +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
> > +-nographic \
> > +-monitor unix:/tmp/test-monitor,server,nowait \
> > +-no-acpi \
> > +-boot c \
> > +-usb \
> > +-drive file=iser://example.org:6000/iqn.1992-01.com.example,
> format=raw,\
> > +if=virtio \
> > +-drive file=iser://example.org:6000/iqn.1992-01.com.example/1,
> format=raw,\
> > +if=virtio \
> > +-net none \
> > +-serial none \
> > +-parallel none
> > diff --git a/tests/qemuargv2xmldata/disk-drive-network-iser.xml
> b/tests/qemuargv2xmldata/disk-drive-network-iser.xml
> > new file mode 100644
> > index 000000000..88f043f66
> > --- /dev/null
> > +++ b/tests/qemuargv2xmldata/disk-drive-network-iser.xml
> > @@ -0,0 +1,41 @@
> > +<domain type='qemu'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219136</memory>
> > +  <currentMemory unit='KiB'>219136</currentMemory>
> > +  <vcpu placement='static'>1</vcpu>
> > +  <os>
> > +    <type arch='i686' machine='pc'>hvm</type>
> > +    <boot dev='hd'/>
> > +  </os>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +    <emulator>/usr/bin/qemu-system-i686</emulator>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example/0'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vda' bus='virtio'/>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
> function='0x0'/>
> > +    </disk>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example/1'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vdb' bus='virtio'/>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
> > +    </disk>
> > +    <controller type='usb' index='0'>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
> function='0x2'/>
> > +    </controller>
> > +    <controller type='pci' index='0' model='pci-root'/>
> > +    <input type='mouse' bus='ps2'/>
> > +    <input type='keyboard' bus='ps2'/>
> > +    <memballoon model='none'/>
> > +  </devices>
> > +</domain>
> > diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c
> > index cb010268c..59b26c647 100644
> > --- a/tests/qemuargv2xmltest.c
> > +++ b/tests/qemuargv2xmltest.c
> > @@ -213,6 +213,8 @@ mymain(void)
> >      DO_TEST("disk-drive-network-nbd-unix");
> >      DO_TEST("disk-drive-network-iscsi");
> >      DO_TEST("disk-drive-network-iscsi-auth");
> > +    DO_TEST("disk-drive-network-iser");
> > +    DO_TEST("disk-drive-network-iser-auth");
> >      DO_TEST("disk-drive-network-gluster");
> >      DO_TEST("disk-drive-network-rbd");
> >      DO_TEST("disk-drive-network-rbd-auth");
> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-auth-secrettype-invalid.xml
> b/tests/qemuxml2argvdata/disk-drive-network-iser-auth-
> secrettype-invalid.xml
> > new file mode 100644
> > index 000000000..dbcf484dc
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-auth-
> secrettype-invalid.xml
> > @@ -0,0 +1,33 @@
> > +<domain type='qemu'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219136</memory>
> > +  <currentMemory unit='KiB'>219136</currentMemory>
> > +  <vcpu placement='static'>1</vcpu>
> > +  <os>
> > +    <type arch='i686' machine='pc'>hvm</type>
> > +    <boot dev='hd'/>
> > +  </os>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +    <emulator>/usr/bin/qemu-system-i686</emulator>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <auth username='myname'>
> > +        <secret usage='mycluster_myname'/>
> > +      </auth>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vda' bus='virtio'/>
> > +    </disk>
> > +    <controller type='usb' index='0'/>
> > +    <controller type='pci' index='0' model='pci-root'/>
> > +    <input type='mouse' bus='ps2'/>
> > +    <input type='keyboard' bus='ps2'/>
> > +    <memballoon model='none'/>
> > +  </devices>
> > +</domain>
> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-auth-wrong-secrettype.xml
> b/tests/qemuxml2argvdata/disk-drive-network-iser-auth-wrong-secrettype.xml
> > new file mode 100644
> > index 000000000..5525e9d86
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-auth-wrong-
> secrettype.xml
> > @@ -0,0 +1,33 @@
> > +<domain type='qemu'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219136</memory>
> > +  <currentMemory unit='KiB'>219136</currentMemory>
> > +  <vcpu placement='static'>1</vcpu>
> > +  <os>
> > +    <type arch='i686' machine='pc'>hvm</type>
> > +    <boot dev='hd'/>
> > +  </os>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +    <emulator>/usr/bin/qemu-system-i686</emulator>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <auth username='myname'>
> > +        <secret type='ceph' usage='mycluster_myname'/>
> > +      </auth>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vda' bus='virtio'/>
> > +    </disk>
> > +    <controller type='usb' index='0'/>
> > +    <controller type='pci' index='0' model='pci-root'/>
> > +    <input type='mouse' bus='ps2'/>
> > +    <input type='keyboard' bus='ps2'/>
> > +    <memballoon model='none'/>
> > +  </devices>
> > +</domain>
> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-auth.args
> b/tests/qemuxml2argvdata/disk-drive-network-iser-auth.args
> > new file mode 100644
> > index 000000000..5fa7a04bb
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-auth.args
> > @@ -0,0 +1,31 @@
> > +LC_ALL=C \
> > +PATH=/bin \
> > +HOME=/home/test \
> > +USER=test \
> > +LOGNAME=test \
> > +QEMU_AUDIO_DRV=none \
> > +/usr/bin/qemu-system-i686 \
> > +-name QEMUGuest1 \
> > +-S \
> > +-M pc \
> > +-m 214 \
> > +-smp 1,sockets=1,cores=1,threads=1 \
> > +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
> > +-nographic \
> > +-nodefaults \
> > +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/
> monitor.sock,\
> > +server,nowait \
> > +-mon chardev=charmonitor,id=monitor,mode=readline \
> > +-no-acpi \
> > +-boot c \
> > +-usb \
> > +-drive file=iser://myname:AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+
> HOBlMQ1A at example.org:\
> > +6000/iqn.1992-01.com.example%3Astorage/1,format=raw,if=none,\
> > +id=drive-virtio-disk0 \
> > +-device virtio-blk-pci,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,\
> > +id=virtio-disk0 \
> > +-drive file=iser://myname:AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+
> HOBlMQ1A at example.org:\
> > +6000/iqn.1992-01.com.example%3Astorage/2,format=raw,if=none,\
> > +id=drive-virtio-disk1 \
> > +-device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk1,\
> > +id=virtio-disk1
> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-auth.xml
> b/tests/qemuxml2argvdata/disk-drive-network-iser-auth.xml
> > new file mode 100644
> > index 000000000..fbcb6b4f1
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-auth.xml
> > @@ -0,0 +1,43 @@
> > +<domain type='qemu'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219136</memory>
> > +  <currentMemory unit='KiB'>219136</currentMemory>
> > +  <vcpu placement='static'>1</vcpu>
> > +  <os>
> > +    <type arch='i686' machine='pc'>hvm</type>
> > +    <boot dev='hd'/>
> > +  </os>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +    <emulator>/usr/bin/qemu-system-i686</emulator>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <auth username='myname'>
> > +        <secret type='iscsi' usage='mycluster_myname'/>
> > +      </auth>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vda' bus='virtio'/>
> > +    </disk>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <auth username='myname'>
> > +        <secret type='iscsi' usage='mycluster_myname'/>
> > +      </auth>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example:storage/2'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vdb' bus='virtio'/>
> > +    </disk>
> > +    <controller type='usb' index='0'/>
> > +    <controller type='pci' index='0' model='pci-root'/>
> > +    <input type='mouse' bus='ps2'/>
> > +    <input type='keyboard' bus='ps2'/>
> > +    <memballoon model='none'/>
> > +  </devices>
> > +</domain>
> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-lun.args
> b/tests/qemuxml2argvdata/disk-drive-network-iser-lun.args
> > new file mode 100644
> > index 000000000..d9428533b
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-lun.args
> > @@ -0,0 +1,27 @@
> > +LC_ALL=C \
> > +PATH=/bin \
> > +HOME=/home/test \
> > +USER=test \
> > +LOGNAME=test \
> > +QEMU_AUDIO_DRV=none \
> > +/usr/bin/qemu-system-i686 \
> > +-name QEMUGuest1 \
> > +-S \
> > +-M pc \
> > +-m 214 \
> > +-smp 1,sockets=1,cores=1,threads=1 \
> > +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
> > +-nographic \
> > +-nodefconfig \
> > +-nodefaults \
> > +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/
> monitor.sock,\
> > +server,nowait \
> > +-mon chardev=charmonitor,id=monitor,mode=readline \
> > +-no-acpi \
> > +-boot c \
> > +-device virtio-scsi-pci,id=scsi0,bus=pci.0,addr=0x3 \
> > +-usb \
> > +-drive file=iser://example.org:3260/iqn.1992-01.com.example/0,
> format=raw,\
> > +if=none,id=drive-scsi0-0-0-0 \
> > +-device scsi-block,bus=scsi0.0,channel=0,scsi-id=0,lun=0,\
> > +drive=drive-scsi0-0-0-0,id=scsi0-0-0-0
> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser-lun.xml
> b/tests/qemuxml2argvdata/disk-drive-network-iser-lun.xml
> > new file mode 100644
> > index 000000000..25fa76140
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser-lun.xml
> > @@ -0,0 +1,28 @@
> > +<domain type='qemu'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219136</memory>
> > +  <currentMemory unit='KiB'>219136</currentMemory>
> > +  <vcpu placement='static'>1</vcpu>
> > +  <os>
> > +    <type arch='i686' machine='pc'>hvm</type>
> > +    <boot dev='hd'/>
> > +  </os>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +    <emulator>/usr/bin/qemu-system-i686</emulator>
> > +    <disk type='network' device='lun'>
> > +      <driver name='qemu' type='raw'/>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example'
> transport='iser'>
> > +        <host name='example.org' port='3260' transport='iser'/>
> > +      </source>
> > +      <target dev='sda' bus='scsi'/>
> > +    </disk>
> > +    <controller type='usb' index='0'/>
> > +    <controller type='scsi' index='0' model='virtio-scsi'/>
> > +    <memballoon model='none'/>
> > +  </devices>
> > +</domain>
> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser.args
> b/tests/qemuxml2argvdata/disk-drive-network-iser.args
> > new file mode 100644
> > index 000000000..49ea467ff
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser.args
> > @@ -0,0 +1,29 @@
> > +LC_ALL=C \
> > +PATH=/bin \
> > +HOME=/home/test \
> > +USER=test \
> > +LOGNAME=test \
> > +QEMU_AUDIO_DRV=none \
> > +/usr/bin/qemu-system-i686 \
> > +-name QEMUGuest1 \
> > +-S \
> > +-M pc \
> > +-m 214 \
> > +-smp 1,sockets=1,cores=1,threads=1 \
> > +-uuid c7a5fdbd-edaf-9455-926a-d65c16db1809 \
> > +-nographic \
> > +-nodefaults \
> > +-chardev socket,id=charmonitor,path=/tmp/lib/domain--1-QEMUGuest1/
> monitor.sock,\
> > +server,nowait \
> > +-mon chardev=charmonitor,id=monitor,mode=readline \
> > +-no-acpi \
> > +-boot c \
> > +-usb \
> > +-drive file=iser://example.org:6000/iqn.1992-01.com.example/0,
> format=raw,\
> > +if=none,id=drive-virtio-disk0 \
> > +-device virtio-blk-pci,bus=pci.0,addr=0x3,drive=drive-virtio-disk0,\
> > +id=virtio-disk0 \
> > +-drive file=iser://example.org:6000/iqn.1992-01.com.example/1,
> format=raw,\
> > +if=none,id=drive-virtio-disk1 \
> > +-device virtio-blk-pci,bus=pci.0,addr=0x4,drive=drive-virtio-disk1,\
> > +id=virtio-disk1
> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser.xml
> b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
> > new file mode 100644
> > index 000000000..b1634555c
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
> > @@ -0,0 +1,37 @@
> > +<domain type='qemu'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219136</memory>
> > +  <currentMemory unit='KiB'>219136</currentMemory>
> > +  <vcpu placement='static'>1</vcpu>
> > +  <os>
> > +    <type arch='i686' machine='pc'>hvm</type>
> > +    <boot dev='hd'/>
> > +  </os>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +    <emulator>/usr/bin/qemu-system-i686</emulator>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example'
> transport='iser'>
> > +        <host name='example.org' port='6000'/>
> > +      </source>
> > +      <target dev='vda' bus='virtio'/>
> > +    </disk>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example/1'
> transport='iser'>
> > +        <host name='example.org' port='6000'/>
> > +      </source>
> > +      <target dev='vdb' bus='virtio'/>
> > +    </disk>
> > +    <controller type='usb' index='0'/>
> > +    <controller type='pci' index='0' model='pci-root'/>
> > +    <input type='mouse' bus='ps2'/>
> > +    <input type='keyboard' bus='ps2'/>
> > +    <memballoon model='none'/>
> > +  </devices>
> > +</domain>
> > diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> > index be32d891e..dcb35f017 100644
> > --- a/tests/qemuxml2argvtest.c
> > +++ b/tests/qemuxml2argvtest.c
> > @@ -939,6 +939,13 @@ mymain(void)
> >      DO_TEST("disk-drive-network-iscsi-lun",
> >              QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI,
> >              QEMU_CAPS_SCSI_BLOCK);
> > +    DO_TEST("disk-drive-network-iser", NONE);
> > +    DO_TEST("disk-drive-network-iser-auth", NONE);
> > +    DO_TEST_PARSE_ERROR("disk-drive-network-iser-auth-secrettype-invalid",
> NONE);
> > +    DO_TEST_PARSE_ERROR("disk-drive-network-iser-auth-wrong-secrettype",
> NONE);
> > +    DO_TEST("disk-drive-network-iser-lun",
> > +            QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI,
> > +            QEMU_CAPS_SCSI_BLOCK);
> >      DO_TEST("disk-drive-network-gluster",
> >              QEMU_CAPS_GLUSTER_DEBUG_LEVEL);
> >      DO_TEST("disk-drive-network-rbd", NONE);
> > diff --git a/tests/qemuxml2xmloutdata/disk-drive-network-iser-auth.xml
> b/tests/qemuxml2xmloutdata/disk-drive-network-iser-auth.xml
> > new file mode 100644
> > index 000000000..1b27fdea2
> > --- /dev/null
> > +++ b/tests/qemuxml2xmloutdata/disk-drive-network-iser-auth.xml
> > @@ -0,0 +1,47 @@
> > +<domain type='qemu'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219136</memory>
> > +  <currentMemory unit='KiB'>219136</currentMemory>
> > +  <vcpu placement='static'>1</vcpu>
> > +  <os>
> > +    <type arch='i686' machine='pc'>hvm</type>
> > +    <boot dev='hd'/>
> > +  </os>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +    <emulator>/usr/bin/qemu-system-i686</emulator>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <auth username='myname'>
> > +        <secret type='iscsi' usage='mycluster_myname'/>
> > +      </auth>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example:storage/1'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vda' bus='virtio'/>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
> function='0x0'/>
> > +    </disk>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <auth username='myname'>
> > +        <secret type='iscsi' usage='mycluster_myname'/>
> > +      </auth>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example:storage/2'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vdb' bus='virtio'/>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
> > +    </disk>
> > +    <controller type='usb' index='0'>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
> function='0x2'/>
> > +    </controller>
> > +    <controller type='pci' index='0' model='pci-root'/>
> > +    <input type='mouse' bus='ps2'/>
> > +    <input type='keyboard' bus='ps2'/>
> > +    <memballoon model='none'/>
> > +  </devices>
> > +</domain>
> > diff --git a/tests/qemuxml2xmloutdata/disk-drive-network-iser.xml
> b/tests/qemuxml2xmloutdata/disk-drive-network-iser.xml
> > new file mode 100644
> > index 000000000..88f043f66
> > --- /dev/null
> > +++ b/tests/qemuxml2xmloutdata/disk-drive-network-iser.xml
> > @@ -0,0 +1,41 @@
> > +<domain type='qemu'>
> > +  <name>QEMUGuest1</name>
> > +  <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
> > +  <memory unit='KiB'>219136</memory>
> > +  <currentMemory unit='KiB'>219136</currentMemory>
> > +  <vcpu placement='static'>1</vcpu>
> > +  <os>
> > +    <type arch='i686' machine='pc'>hvm</type>
> > +    <boot dev='hd'/>
> > +  </os>
> > +  <clock offset='utc'/>
> > +  <on_poweroff>destroy</on_poweroff>
> > +  <on_reboot>restart</on_reboot>
> > +  <on_crash>destroy</on_crash>
> > +  <devices>
> > +    <emulator>/usr/bin/qemu-system-i686</emulator>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example/0'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vda' bus='virtio'/>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'
> function='0x0'/>
> > +    </disk>
> > +    <disk type='network' device='disk'>
> > +      <driver name='qemu' type='raw'/>
> > +      <source protocol='iscsi' name='iqn.1992-01.com.example/1'
> transport='iser'>
> > +        <host name='example.org' port='6000' transport='iser'/>
> > +      </source>
> > +      <target dev='vdb' bus='virtio'/>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'
> function='0x0'/>
> > +    </disk>
> > +    <controller type='usb' index='0'>
> > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'
> function='0x2'/>
> > +    </controller>
> > +    <controller type='pci' index='0' model='pci-root'/>
> > +    <input type='mouse' bus='ps2'/>
> > +    <input type='keyboard' bus='ps2'/>
> > +    <memballoon model='none'/>
> > +  </devices>
> > +</domain>
> > diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c
> > index 2be8eb2c1..aeeda2dd1 100644
> > --- a/tests/qemuxml2xmltest.c
> > +++ b/tests/qemuxml2xmltest.c
> > @@ -515,6 +515,8 @@ mymain(void)
> >      DO_TEST("disk-drive-network-nbd-unix", NONE);
> >      DO_TEST("disk-drive-network-iscsi", NONE);
> >      DO_TEST("disk-drive-network-iscsi-auth", NONE);
> > +    DO_TEST("disk-drive-network-iser", NONE);
> > +    DO_TEST("disk-drive-network-iser-auth", NONE);
> >      DO_TEST("disk-drive-network-gluster", NONE);
> >      DO_TEST("disk-drive-network-rbd", NONE);
> >      DO_TEST("disk-drive-network-rbd-auth", NONE);
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20180118/9e08d353/attachment-0001.htm>


More information about the libvir-list mailing list