<div dir="ltr"><span style="font-size:12.800000190734863px">>You created two examples one without <auth> and the other with it.  Why</span><br style="font-size:12.800000190734863px"><span style="font-size:12.800000190734863px">not have one example with one disk using an iscsi/iser server with</span><br style="font-size:12.800000190734863px"><span style="font-size:12.800000190734863px"><auth> and another without...</span><br><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">I copied from iSCSI test cases, and keep them as same structure.</span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">></span><span style="font-size:12.800000190734863px">If all that matters is passing "iser:" instead if "iscsi:", then limit...</span></div><div><span style="font-size:12.800000190734863px">I will try to remove iser from <source> to see if it can work.</span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">>Search through </span><a href="https://libvirt.org/formatdomain.html" rel="noreferrer" target="_blank" style="font-size:12.800000190734863px">https://libvirt.org/<wbr>formatdomain.html</a><span style="font-size:12.800000190734863px"> for "rdma" and be</span><br style="font-size:12.800000190734863px"><span style="font-size:12.800000190734863px">sure the iscsi description is modified to note usage of "iser"...</span><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">For this behaviour, I did discuss in the mail list several days ago, they think add "iser" transport for existing iscsi driver should be better, since qemu using same driver for iser and iscsi.</span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">Best Regards,</span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">Charles.</span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 19, 2018 at 6:19 AM, John Ferlan <span dir="ltr"><<a href="mailto:jferlan@redhat.com" target="_blank">jferlan@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
<br>
On 01/18/2018 01:46 AM, Charles Kelimod wrote:<br>
> Hello John,<br>
><br>
<br>
This is a technical list - top-posting is not acceptable.<br>
<span class=""><br>
> I have questions:<br>
><br>
>>>This and the Parse makes no sense when compared to the 3 possible<br>
> options.  That is, it's possible to have "tcp", "rdma", and "iser", but<br>
> you only care about "iser".<br>
><br>
> This is because for other types are optional, there was no this line<br>
> here, therefor I added this and only care iser.<br>
><br>
<br>
</span>They may be optional, but they exist and thus cannot be just ignored<br>
especially since you're trying to add something else.<br>
<span class=""><br>
>>Consider using a local @transport... I didn't check if src->hosts could<br>
> be NULL here...<br>
><br>
> This is used for iSCSI only, in this case, from my other<br>
> place modification I should make sure src->hosts won't be NULL, and can<br>
> it be local?<br>
><br>
<br>
</span>Loss of context here makes a response difficult, but I think my point<br>
was to make a local @transport variable just made things easier to read<br>
rather than what turns into a very long line.<br>
<span class=""><br>
><br>
> For those samples like "auth", I don't think those are all necessary,<br>
> but if I don't add those, the tests won't pass. Because iser is some<br>
> strange, just part of iSCSI, it is all same as iscsi except transport..<br>
><br>
<br>
</span>You created two examples one without <auth> and the other with it.  Why<br>
not have one example with one disk using an iscsi/iser server with<br>
<auth> and another without...<br>
<br>
Also you didn't attempt hostdev examples, but if you did you probably<br>
would find VIR_DOMAIN_HOSTDEV_SCSI_<wbr>PROTOCOL_TYPE_ISCSI will have a<br>
number of places where you'll need adjustments.<br>
<span class=""><br>
>>Why do both <source> and <host> get the transport='iser'?<br>
> From qemu command line and code architecture I believe both place are<br>
> need, do you think we should use "iser" in only source or host section?<br>
> I can do dig search.<br>
><br>
<br>
</span>If all that matters is passing "iser:" instead if "iscsi:", then limit<br>
alterations to virStorageNetHostTransport processing. IOW: It seems all<br>
that you need to adjust is the <host> element. AFAICT, formatting<br>
protocol is handled properly in virDomainDiskSourceFormatNetwo<wbr>rk and<br>
parsed properly in virDomainDiskSourceNetworkPars<wbr>e. You could modify the<br>
latter to alter the comment to note "iser" as well as tcp (default),<br>
unix, rdma, or iser. The tricky part will be ensuring that it's only<br>
used with an iSCSI protocol, but checking that is not impossible during<br>
domain device post processing.<br>
<br>
Searching on virStorageNetHostTransport and VIR_STORAGE_NET_HOST_TRANS_<br>
will "show" where changes need to be made. Making changes across<br>
multiple patches where the one patch handles just the XML changes and<br>
another handles the qemu changes is perhaps better. Preceding those may<br>
be a patch with adjustments to existing if/else logic to convert to<br>
switch/case logic to ensure future adjustments cover all the options.<br>
<br>
Search through <a href="https://libvirt.org/formatdomain.html" rel="noreferrer" target="_blank">https://libvirt.org/<wbr>formatdomain.html</a> for "rdma" and be<br>
sure the iscsi description is modified to note usage of "iser"...<br>
<br>
Looking forward to what I think is actually v5<br>
<br>
John<br>
<span class="">><br>
><br>
> Best Regards,<br>
> Charles.<br>
><br>
><br>
> On Wed, Jan 17, 2018 at 7:10 AM, John Ferlan <<a href="mailto:jferlan@redhat.com">jferlan@redhat.com</a><br>
</span><span class="">> <mailto:<a href="mailto:jferlan@redhat.com">jferlan@redhat.com</a>>> wrote:<br>
><br>
><br>
><br>
>     On 01/16/2018 03:52 AM, <a href="mailto:lichstor@gmail.com">lichstor@gmail.com</a><br>
</span><span class="">>     <mailto:<a href="mailto:lichstor@gmail.com">lichstor@gmail.com</a>> wrote:<br>
>     > From: zhangshengyu <<a href="mailto:zhangshengyu@fusionstack.cn">zhangshengyu@fusionstack.cn</a><br>
</span>>     <mailto:<a href="mailto:zhangshengyu@fusionstack.cn">zhangshengyu@<wbr>fusionstack.cn</a>>><br>
<span class="">>     ><br>
><br>
>     This needs to be split up better into multiple patches - there are many<br>
>     examples of how to do that. Just see how patches were done the last time<br>
>     someone added a new transport type. Typically the docs/schemas,<br>
>     src/conf, src/util, xml2xml tests would go in one patch while the<br>
>     src/qemu, xml2argv patches in a second patch.  Each patch would be<br>
>     compile-able and testable.<br>
><br>
>     As pointed out before, you're still not completely following the<br>
>     contributor guidelines w/r/t commit message. Furthermore, when you<br>
>     "update" your patch and post a followup version, you should make a "v2"<br>
>     or "v3" or "v4" in your header and then either in the cover letter or<br>
>     after the '---' describe what changed since the previous patch.<br>
><br>
>     The first patch would also need to update docs/<a href="http://formatdomain.html.in" rel="noreferrer" target="_blank">formatdomain.html.in</a><br>
</span>>     <<a href="http://formatdomain.html.in" rel="noreferrer" target="_blank">http://formatdomain.html.in</a>> and<br>
<div><div class="h5">>     the commit message should also describe the new XML being added - there<br>
>     are many examples.<br>
><br>
>     > ---<br>
>     >  docs/schemas/domaincommon.rng                      | 28 +++++++++++++<br>
>     >  src/conf/domain_conf.c                             |  8 ++++<br>
>     >  src/qemu/qemu_block.c                              | 24 ++++++++++-<br>
>     >  src/qemu/qemu_command.c                            |  3 ++<br>
>     >  src/qemu/qemu_parse_command.c                      | 10 ++++-<br>
>     >  src/storage/storage_backend_<wbr>gluster.c              |  1 +<br>
>     >  src/util/virstoragefile.c                          |  3 +-<br>
>     >  src/util/virstoragefile.h                          |  1 +<br>
>     >  .../disk-drive-network-iser-<wbr>auth.args              | 25 ++++++++++++<br>
>     >  .../disk-drive-network-iser-<wbr>auth.xml               | 44<br>
>     ++++++++++++++++++++<br>
>     >  .../qemuargv2xmldata/disk-<wbr>drive-network-iser.args  | 25 ++++++++++++<br>
>     >  tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.xml | 41<br>
>     +++++++++++++++++++<br>
>     >  tests/qemuargv2xmltest.c                           |  2 +<br>
>     >  ...-drive-network-iser-auth-<wbr>secrettype-invalid.xml | 33<br>
>     +++++++++++++++<br>
>     >  ...sk-drive-network-iser-auth-<wbr>wrong-secrettype.xml | 33<br>
>     +++++++++++++++<br>
>     >  .../disk-drive-network-iser-<wbr>auth.args              | 31<br>
>     ++++++++++++++<br>
>     >  .../disk-drive-network-iser-<wbr>auth.xml               | 43<br>
>     ++++++++++++++++++++<br>
>     >  .../disk-drive-network-iser-<wbr>lun.args               | 27 +++++++++++++<br>
>     >  .../disk-drive-network-iser-<wbr>lun.xml                | 28 +++++++++++++<br>
>     >  .../qemuxml2argvdata/disk-<wbr>drive-network-iser.args  | 29 +++++++++++++<br>
>     >  tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.xml | 37<br>
>     +++++++++++++++++<br>
>     >  tests/qemuxml2argvtest.c                           |  7 ++++<br>
>     >  .../disk-drive-network-iser-<wbr>auth.xml               | 47<br>
>     ++++++++++++++++++++++<br>
>     >  .../qemuxml2xmloutdata/disk-<wbr>drive-network-iser.xml | 41<br>
>     +++++++++++++++++++<br>
>     >  tests/qemuxml2xmltest.c                            |  2 +<br>
>     >  25 files changed, 569 insertions(+), 4 deletions(-)<br>
>     >  create mode 100644<br>
>     tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.args<br>
>     >  create mode 100644<br>
>     tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.xml<br>
>     >  create mode 100644<br>
>     tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.args<br>
>     >  create mode 100644 tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.xml<br>
>     >  create mode 100644<br>
>     tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-<wbr>secrettype-invalid.xml<br>
>     >  create mode 100644<br>
>     tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-wrong-<wbr>secrettype.xml<br>
>     >  create mode 100644<br>
>     tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.args<br>
>     >  create mode 100644<br>
>     tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.xml<br>
>     >  create mode 100644<br>
>     tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.args<br>
>     >  create mode 100644<br>
>     tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.xml<br>
>     >  create mode 100644<br>
>     tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.args<br>
>     >  create mode 100644 tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.xml<br>
>     >  create mode 100644<br>
>     tests/qemuxml2xmloutdata/disk-<wbr>drive-network-iser-auth.xml<br>
>     >  create mode 100644<br>
>     tests/qemuxml2xmloutdata/disk-<wbr>drive-network-iser.xml<br>
>     ><br>
>     > diff --git a/docs/schemas/domaincommon.<wbr>rng<br>
>     b/docs/schemas/domaincommon.<wbr>rng<br>
>     > index f22c932f6..819a8791d 100644<br>
>     > --- a/docs/schemas/domaincommon.<wbr>rng<br>
>     > +++ b/docs/schemas/domaincommon.<wbr>rng<br>
>     > @@ -1534,6 +1534,7 @@<br>
>     >                <choice><br>
>     >                  <value>tcp</value><br>
>     >                  <value>rdma</value><br>
>     > +                <value>iser</value><br>
><br>
>     This is adding the attribute for the <disk> <source> <host>, so why is<br>
>     it also necessary on the <source ...> line after protocol...<br>
><br>
>     >                </choice><br>
>     >              </attribute><br>
>     >            </optional><br>
>     > @@ -1613,6 +1614,15 @@<br>
>     >        <optional><br>
>     >          <ref name="encryption"/><br>
>     >        </optional><br>
>     > +      <optional><br>
><br>
>     So this is the <disk> <source> transport attribute?<br>
><br>
>     > +        <attribute name="transport"><br>
>     > +          <choice><br>
>     > +            <value>tcp</value><br>
>     > +            <value>rdma</value><br>
>     > +            <value>iser</value><br>
>     > +          </choice><br>
>     > +        </attribute><br>
><br>
>     Furthermore, if it must be kept here, then since the <attribute><br>
>     sequence is repeated 3 times, may as well make a definition for it and<br>
>     then use it everywhere rather than cut-copy-paste in each place.<br>
><br>
><br>
>     > +      </optional><br>
>     >      </element><br>
>     >    </define><br>
>     ><br>
>     > @@ -4386,6 +4396,15 @@<br>
>     >            <attribute name="name"><br>
>     >              <text/><br>
>     >            </attribute><br>
>     > +          <optional><br>
>     > +            <attribute name="transport"><br>
><br>
>     This is the <hostdev> <source>, but I don't believe that it's actually<br>
>     tested as there's no XML that I see...  I also didn't check to see<br>
>     whether you parsed and formatted both <disk> and <hostdev> in<br>
>     domain_conf...<br>
><br>
><br>
>     > +              <choice><br>
>     > +                <value>tcp</value><br>
>     > +                <value>rdma</value><br>
>     > +                <value>iser</value><br>
>     > +              </choice><br>
>     > +            </attribute><br>
>     > +          </optional><br>
>     >            <interleave><br>
>     >              <oneOrMore><br>
>     >                <element name='host'><br>
>     > @@ -4397,6 +4416,15 @@<br>
>     >                      <ref name="PortNumber"/><br>
>     >                    </attribute><br>
>     >                  </optional><br>
>     > +                <optional><br>
>     > +                  <attribute name="transport"><br>
><br>
>     And this is for the <hostdev> <source> <host><br>
><br>
>     > +                    <choice><br>
>     > +                      <value>tcp</value><br>
>     > +                      <value>rdma</value><br>
>     > +                      <value>iser</value><br>
>     > +                    </choice><br>
>     > +                  </attribute><br>
>     > +                </optional><br>
>     >                  <empty/><br>
>     >                </element><br>
>     >              </oneOrMore><br>
>     > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c<br>
>     > index a1c25060f..8aa193ac2 100644<br>
>     > --- a/src/conf/domain_conf.c<br>
>     > +++ b/src/conf/domain_conf.c<br>
>     > @@ -7075,6 +7075,7 @@ virDomainStorageNetworkParseHo<wbr>sts(xmlNodePtr node,<br>
>     >                                    virStorageNetHostDefPtr *hosts,<br>
>     >                                    size_t *nhosts)<br>
>     >  {<br>
>     > +    char *transport = NULL;<br>
>     >      xmlNodePtr child;<br>
>     ><br>
>     >      for (child = node->children; child; child = child->next) {<br>
>     > @@ -7086,6 +7087,9 @@ virDomainStorageNetworkParseHo<wbr>sts(xmlNodePtr node,<br>
>     >          }<br>
>     >      }<br>
>     ><br>
>     > +    if ((*hosts) && (transport = virXMLPropString(node, "transport")))<br>
>     > +        (*hosts)->transport = virStorageNetHostTransportType<wbr>FromString(transport);<br>
>     > +<br>
><br>
>     @transport is leaked<br>
><br>
>     Why only parsed for "<host>" but the RNG has <source> and <host>?<br>
><br>
>     >      return 0;<br>
>     >  }<br>
>     ><br>
>     > @@ -8490,6 +8494,7 @@ virDomainDiskSourceNetworkPars<wbr>e(xmlNodePtr node,<br>
>     >      if (<wbr>virDomainStorageNetworkParseHo<wbr>sts(node, &src->hosts, &src->nhosts) < 0)<br>
>     >          goto cleanup;<br>
>     ><br>
>     > +<br>
><br>
>     extraneous blank line<br>
><br>
>     >      virStorageSourceNetworkAssignD<wbr>efaultPorts(src);<br>
>     ><br>
>     >      ret = 0;<br>
>     > @@ -22371,6 +22376,9 @@ virDomainDiskSourceFormatNetwo<wbr>rk(virBufferPtr attrBuf,<br>
>     ><br>
>     >      VIR_FREE(path);<br>
>     ><br>
>     > +    if (src->hosts && src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER)<br>
>     > +        virBufferEscapeString(attrBuf, " transport='%s'", "iser");<br>
>     > +<br>
><br>
>     The virStorageNetHostTransportType<wbr>ToString should be used and not "iser"<br>
>     directly.<br>
><br>
>     This and the Parse makes no sense when compared to the 3 possible<br>
>     options.  That is, it's possible to have "tcp", "rdma", and "iser", but<br>
>     you only care about "iser".<br>
><br>
>     >      if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&<br>
>     >          !(flags & VIR_DOMAIN_DEF_FORMAT_<wbr>MIGRATABLE &&<br>
>     >            src->tlsFromConfig))<br>
>     > diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c<br>
>     > index 585f0255e..49837205f 100644<br>
>     > --- a/src/qemu/qemu_block.c<br>
>     > +++ b/src/qemu/qemu_block.c<br>
>     > @@ -433,6 +433,12 @@<br>
>     qemuBlockStorageSourceGetURI(<wbr>virStorageSourcePtr src)<br>
>     >          if (VIR_STRDUP(uri->scheme,<br>
>     >                       <br>
>      <wbr>virStorageNetProtocolTypeToStr<wbr>ing(src->protocol)) < 0)<br>
>     >              goto cleanup;<br>
>     > +    } else if (src->hosts->transport ==<br>
>     VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER) {<br>
>     > +        uri->port = src->hosts->port;<br>
>     > +<br>
>     > +        if (VIR_STRDUP(uri->scheme,<br>
>     > +                     <br>
>      <wbr>virStorageNetHostTransportType<wbr>ToString(src->hosts-><wbr>transport)) < 0)<br>
>     > +            goto cleanup;<br>
>     >      } else {<br>
>     >          if (virAsprintf(&uri->scheme, "%s+%s",<br>
>     >                         <br>
>     virStorageNetProtocolTypeToStr<wbr>ing(src->protocol),<br>
>     > @@ -506,6 +512,19 @@<br>
>     qemuBlockStorageSourceBuildJSO<wbr>NSocketAddress(<wbr>virStorageNetHostDefPtr<br>
>     host,<br>
>     >              goto cleanup;<br>
>     >          break;<br>
>     ><br>
>     > +    case VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER:<br>
>     > +        transport = "iser";<br>
><br>
>     again TypeToString should be used...<br>
><br>
>     > +        if (virAsprintf(&port, "%u", host->port) < 0)<br>
>     > +            goto cleanup;<br>
>     > +<br>
>     > +        if (virJSONValueObjectCreate(&<wbr>server,<br>
>     > +                                     "s:type", transport,<br>
>     > +                                     "s:host", host->name,<br>
>     > +                                     "s:port", port,<br>
>     > +                                     NULL) < 0)<br>
>     > +            goto cleanup;<br>
>     > +        break;<br>
>     > +<br>
>     >      case VIR_STORAGE_NET_HOST_TRANS_<wbr>UNIX:<br>
>     >          if (virJSONValueObjectCreate(&<wbr>server,<br>
>     >                                       "s:type", "unix",<br>
>     > @@ -590,7 +609,8 @@ qemuBlockStorageSourceBuildJSO<wbr>NInetSocketAddress(<wbr>virStorageNetHostDefPtr host)<br>
>     >      virJSONValuePtr ret = NULL;<br>
>     >      char *port = NULL;<br>
>     ><br>
>     > -    if (host->transport != VIR_STORAGE_NET_HOST_TRANS_<wbr>TCP) {<br>
>     > +    if (host->transport != VIR_STORAGE_NET_HOST_TRANS_TCP &&<br>
>     > +        host->transport != VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER) {<br>
>     >          virReportError(VIR_ERR_<wbr>INTERNAL_ERROR, "%s",<br>
>     >                         _("only TCP protocol can be converted to InetSocketAddress"));<br>
><br>
>     This doesn't make sense - the error message doesn't match the if<br>
>     conditions.  Check your usage of && to considering what the other<br>
>     options are and what's being checked here.<br>
><br>
>     >          return NULL;<br>
>     > @@ -831,7 +851,7 @@ qemuBlockStorageSourceGetISCSI<wbr>Props(virStorageSourcePtr src)<br>
>     >                                            "s:portal", portal,<br>
>     >                                            "s:target", target,<br>
>     >                                            "u:lun", lun,<br>
>     > -                                          "s:transport", "tcp",<br>
>     > +                                          "s:transport", virStorageNetHostTransportType<wbr>ToString(src->hosts-><wbr>transport),<br>
><br>
>     Consider using a local @transport... I didn't check if src->hosts could<br>
>     be NULL here...<br>
><br>
>     >                                            "S:user", username,<br>
>     >                                            "S:password-secret",<br>
>     objalias,<br>
>     >                                            NULL));<br>
>     > diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c<br>
>     > index b8aede32d..dd6e3be9a 100644<br>
>     > --- a/src/qemu/qemu_command.c<br>
>     > +++ b/src/qemu/qemu_command.c<br>
>     > @@ -883,6 +883,8 @@ qemuBuildNetworkDriveStr(<wbr>virStorageSourcePtr src,<br>
>     >              if (!((src->hosts->name && strchr(src->hosts->name,<br>
>     ':')) ||<br>
>     >                    (src->hosts->transport ==<br>
>     VIR_STORAGE_NET_HOST_TRANS_TCP &&<br>
>     >                     !src->hosts->name) ||<br>
>     > +                  (src->hosts->transport ==<br>
>     VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER &&<br>
>     > +                   !src->hosts->name) ||<br>
>     >                    (src->hosts->transport ==<br>
>     VIR_STORAGE_NET_HOST_TRANS_<wbr>UNIX &&<br>
>     >                     src->hosts->socket &&<br>
>     >                     src->hosts->socket[0] != '/'))) {<br>
>     > @@ -891,6 +893,7 @@ qemuBuildNetworkDriveStr(<wbr>virStorageSourcePtr src,<br>
>     ><br>
>     >                  switch (src->hosts->transport) {<br>
>     >                  case VIR_STORAGE_NET_HOST_TRANS_<wbr>TCP:<br>
>     > +                case VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER:<br>
>     >                      virBufferAsprintf(&buf, "%s:%u",<br>
>     >                                        src->hosts->name,<br>
>     src->hosts->port);<br>
>     >                      break;<br>
>     > diff --git a/src/qemu/qemu_parse_command.<wbr>c<br>
>     b/src/qemu/qemu_parse_command.<wbr>c<br>
>     > index 5fe3f97d0..d376af208 100644<br>
>     > --- a/src/qemu/qemu_parse_command.<wbr>c<br>
>     > +++ b/src/qemu/qemu_parse_command.<wbr>c<br>
>     > @@ -70,7 +70,9 @@ qemuParseDriveURIString(<wbr>virDomainDiskDefPtr def,<br>
>     virURIPtr uri,<br>
>     >      if (transp)<br>
>     >          *transp++ = 0;<br>
>     ><br>
>     > -    if (STRNEQ(uri->scheme, scheme)) {<br>
>     > +    if (STREQ(uri->scheme, "iser")) {<br>
>     > +        transp = (char *)"iser";<br>
><br>
>     <sigh><br>
><br>
>     At least you attempted the parse code - it's largely forgotten.<br>
><br>
>     > +    } else if (STRNEQ(uri->scheme, scheme)) {<br>
>     >          virReportError(VIR_ERR_<wbr>INTERNAL_ERROR,<br>
>     >                         _("Invalid transport/scheme '%s'"),<br>
>     uri->scheme);<br>
>     >          goto error;<br>
>     > @@ -709,6 +711,12 @@<br>
>     qemuParseCommandLineDisk(<wbr>virDomainXMLOptionPtr xmlopt,<br>
>     ><br>
>     >                      if (qemuParseISCSIString(def) < 0)<br>
>     >                          goto error;<br>
>     > +                } else if (STRPREFIX(def->src->path, "iser:")) {<br>
>     > +                    def->src->type = VIR_STORAGE_TYPE_NETWORK;<br>
>     > +                    def->src->protocol =<br>
>     VIR_STORAGE_NET_PROTOCOL_<wbr>ISCSI;<br>
>     > +<br>
>     > +                    if (qemuParseISCSIString(def) < 0)<br>
>     > +                        goto error;<br>
>     >                  } else if (STRPREFIX(def->src->path, "sheepdog:")) {<br>
>     >                      char *p = def->src->path;<br>
>     >                      char *port, *vdi;<br>
>     > diff --git a/src/storage/storage_backend_<wbr>gluster.c<br>
>     b/src/storage/storage_backend_<wbr>gluster.c<br>
>     > index 5eea84f16..1452fa0cd 100644<br>
>     > --- a/src/storage/storage_backend_<wbr>gluster.c<br>
>     > +++ b/src/storage/storage_backend_<wbr>gluster.c<br>
>     > @@ -608,6 +608,7 @@<br>
>     virStorageFileBackendGlusterIn<wbr>itServer(<wbr>virStorageFileBackendGlusterPr<wbr>ivPtr<br>
>     priv,<br>
>     >          hoststr = host->socket;<br>
>     >          break;<br>
>     ><br>
>     > +    case VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER:<br>
>     >      case VIR_STORAGE_NET_HOST_TRANS_<wbr>LAST:<br>
>     >          break;<br>
>     >      }<br>
>     > diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c<br>
>     > index 5780180a9..63253a9c4 100644<br>
>     > --- a/src/util/virstoragefile.c<br>
>     > +++ b/src/util/virstoragefile.c<br>
>     > @@ -92,7 +92,8 @@ VIR_ENUM_IMPL(<wbr>virStorageNetProtocol,<br>
>     VIR_STORAGE_NET_PROTOCOL_LAST,<br>
>     >  VIR_ENUM_IMPL(<wbr>virStorageNetHostTransport,<br>
>     VIR_STORAGE_NET_HOST_TRANS_<wbr>LAST,<br>
>     >                "tcp",<br>
>     >                "unix",<br>
>     > -              "rdma")<br>
>     > +              "rdma",<br>
>     > +              "iser")<br>
>     ><br>
>     >  VIR_ENUM_IMPL(<wbr>virStorageSourcePoolMode,<br>
>     >                VIR_STORAGE_SOURCE_POOL_MODE_<wbr>LAST,<br>
>     > diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h<br>
>     > index ecd806c93..5a6ec7776 100644<br>
>     > --- a/src/util/virstoragefile.h<br>
>     > +++ b/src/util/virstoragefile.h<br>
>     > @@ -147,6 +147,7 @@ typedef enum {<br>
>     >      VIR_STORAGE_NET_HOST_TRANS_<wbr>TCP,<br>
>     >      VIR_STORAGE_NET_HOST_TRANS_<wbr>UNIX,<br>
>     >      VIR_STORAGE_NET_HOST_TRANS_<wbr>RDMA,<br>
>     > +    VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER,<br>
>     ><br>
>     >      VIR_STORAGE_NET_HOST_TRANS_<wbr>LAST<br>
>     >  } virStorageNetHostTransport;<br>
>     > diff --git<br>
>     a/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.args<br>
>     b/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.args<br>
>     > new file mode 100644<br>
>     > index 000000000..aaf10d8c8<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.args<br>
>     > @@ -0,0 +1,25 @@<br>
>     > +LC_ALL=C \<br>
>     > +PATH=/bin \<br>
>     > +HOME=/home/test \<br>
>     > +USER=test \<br>
>     > +LOGNAME=test \<br>
>     > +QEMU_AUDIO_DRV=none \<br>
>     > +/usr/bin/qemu-system-i686 \<br>
>     > +-name QEMUGuest1 \<br>
>     > +-S \<br>
>     > +-M pc \<br>
>     > +-m 214 \<br>
>     > +-smp 1 \<br>
>     > +-uuid c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809 \<br>
>     > +-nographic \<br>
>     > +-monitor unix:/tmp/test-monitor,server,<wbr>nowait \<br>
>     > +-no-acpi \<br>
>     > +-boot c \<br>
>     > +-usb \<br>
>     > +-drive<br>
</div></div>>     file=iser://<a href="mailto:myname%3AAQCVn5hO6HzFAhAAq0NCv8jtJcIcE%2BHOBlMQ1A@example.org">myname:<wbr>AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+<wbr>HOBlMQ1A@example.org</a> <mailto:<a href="mailto:myname%253AAQCVn5hO6HzFAhAAq0NCv8jtJcIcE%252BHOBlMQ1A@example.org">myname%<wbr>3AAQCVn5hO6HzFAhAAq0NCv8jtJcIc<wbr>E%2BHOBlMQ1A@example.org</a>>:\<br>
<span class="">>     > +6000/iqn.1992-01.com.example%<wbr>3Astorage/1,format=raw,if=<wbr>virtio \<br>
>     > +-drive<br>
>     file=iser://<a href="http://example.org:6000/iqn.1992-01.com.example%3Astorage/2,\" rel="noreferrer" target="_blank">example.org:6000/<wbr>iqn.1992-01.com.example%<wbr>3Astorage/2,\</a><br>
</span>>     <<a href="http://example.org:6000/iqn.1992-01.com.example%3Astorage/2,\" rel="noreferrer" target="_blank">http://example.org:6000/iqn.<wbr>1992-01.com.example%3Astorage/<wbr>2,\</a>><br>
<div><div class="h5">>     > +format=raw,if=virtio \<br>
>     > +-net none \<br>
>     > +-serial none \<br>
>     > +-parallel none<br>
>     > diff --git<br>
>     a/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.xml<br>
>     b/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.xml<br>
>     > new file mode 100644<br>
>     > index 000000000..7226443fb<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.xml<br>
>     > @@ -0,0 +1,44 @@<br>
>     > +<domain type='qemu'><br>
>     > +  <name>QEMUGuest1</name><br>
>     > +  <uuid>c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809</uuid><br>
>     > +  <memory unit='KiB'>219136</memory><br>
>     > +  <currentMemory unit='KiB'>219136</<wbr>currentMemory><br>
>     > +  <vcpu placement='static'>1</vcpu><br>
>     > +  <os><br>
>     > +    <type arch='i686' machine='pc'>hvm</type><br>
>     > +    <boot dev='hd'/><br>
>     > +  </os><br>
>     > +  <clock offset='utc'/><br>
>     > +  <on_poweroff>destroy</on_<wbr>poweroff><br>
>     > +  <on_reboot>restart</on_reboot><br>
>     > +  <on_crash>destroy</on_crash><br>
>     > +  <devices><br>
>     > +    <emulator>/usr/bin/qemu-<wbr>system-i686</emulator><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <auth username='myname'><br>
>     > +        <secret type='iscsi' usage='qemuargv2xml_usage'/><br>
>     > +      </auth><br>
>     > +      <source protocol='iscsi'<br>
>     name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
</div></div>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<span class="">>     transport='iser'/><br>
><br>
>     Why do both <source> and <host> get the transport='iser'?<br>
><br>
>     Since patches weren't well formed, I didn't dig in too deep into<br>
>     checking what you've done vs. how it should be done.<br>
><br>
>     Does "auth" really have any bearing here? That is, is it really<br>
>     necessary to supply both two tests where one only adds auth that has<br>
>     nothing to do with iser transport?<br>
><br>
>     John<br>
><br>
>     > +      </source><br>
>     > +      <target dev='vda' bus='virtio'/><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'<br>
>     function='0x0'/><br>
>     > +    </disk><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <source protocol='iscsi'<br>
>     name='iqn.1992-01.com.example:<wbr>storage/2' transport='iser'><br>
</span>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<div><div class="h5">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vdb' bus='virtio'/><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'<br>
>     function='0x0'/><br>
>     > +    </disk><br>
>     > +    <controller type='usb' index='0'><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'<br>
>     function='0x2'/><br>
>     > +    </controller><br>
>     > +    <controller type='pci' index='0' model='pci-root'/><br>
>     > +    <input type='mouse' bus='ps2'/><br>
>     > +    <input type='keyboard' bus='ps2'/><br>
>     > +    <memballoon model='none'/><br>
>     > +  </devices><br>
>     > +</domain><br>
>     > diff --git a/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.args<br>
>     b/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.args<br>
>     > new file mode 100644<br>
>     > index 000000000..c476e759e<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.args<br>
>     > @@ -0,0 +1,25 @@<br>
>     > +LC_ALL=C \<br>
>     > +PATH=/bin \<br>
>     > +HOME=/home/test \<br>
>     > +USER=test \<br>
>     > +LOGNAME=test \<br>
>     > +QEMU_AUDIO_DRV=none \<br>
>     > +/usr/bin/qemu-system-i686 \<br>
>     > +-name QEMUGuest1 \<br>
>     > +-S \<br>
>     > +-M pc \<br>
>     > +-m 214 \<br>
>     > +-smp 1 \<br>
>     > +-uuid c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809 \<br>
>     > +-nographic \<br>
>     > +-monitor unix:/tmp/test-monitor,server,<wbr>nowait \<br>
>     > +-no-acpi \<br>
>     > +-boot c \<br>
>     > +-usb \<br>
>     > +-drive<br>
>     file=iser://<a href="http://example.org:6000/iqn.1992-01.com.example,format=raw,\" rel="noreferrer" target="_blank">example.org:6000/<wbr>iqn.1992-01.com.example,<wbr>format=raw,\</a><br>
</div></div>>     <<a href="http://example.org:6000/iqn.1992-01.com.example,format=raw,\" rel="noreferrer" target="_blank">http://example.org:6000/iqn.<wbr>1992-01.com.example,format=<wbr>raw,\</a>><br>
<span class="">>     > +if=virtio \<br>
>     > +-drive<br>
>     file=iser://<a href="http://example.org:6000/iqn.1992-01.com.example/1,format=raw,\" rel="noreferrer" target="_blank">example.org:6000/<wbr>iqn.1992-01.com.example/1,<wbr>format=raw,\</a><br>
</span>>     <<a href="http://example.org:6000/iqn.1992-01.com.example/1,format=raw,\" rel="noreferrer" target="_blank">http://example.org:6000/iqn.<wbr>1992-01.com.example/1,format=<wbr>raw,\</a>><br>
<div><div class="h5">>     > +if=virtio \<br>
>     > +-net none \<br>
>     > +-serial none \<br>
>     > +-parallel none<br>
>     > diff --git a/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.xml<br>
>     b/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.xml<br>
>     > new file mode 100644<br>
>     > index 000000000..88f043f66<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.xml<br>
>     > @@ -0,0 +1,41 @@<br>
>     > +<domain type='qemu'><br>
>     > +  <name>QEMUGuest1</name><br>
>     > +  <uuid>c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809</uuid><br>
>     > +  <memory unit='KiB'>219136</memory><br>
>     > +  <currentMemory unit='KiB'>219136</<wbr>currentMemory><br>
>     > +  <vcpu placement='static'>1</vcpu><br>
>     > +  <os><br>
>     > +    <type arch='i686' machine='pc'>hvm</type><br>
>     > +    <boot dev='hd'/><br>
>     > +  </os><br>
>     > +  <clock offset='utc'/><br>
>     > +  <on_poweroff>destroy</on_<wbr>poweroff><br>
>     > +  <on_reboot>restart</on_reboot><br>
>     > +  <on_crash>destroy</on_crash><br>
>     > +  <devices><br>
>     > +    <emulator>/usr/bin/qemu-<wbr>system-i686</emulator><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <source protocol='iscsi' name='iqn.1992-01.com.example/<wbr>0'<br>
>     transport='iser'><br>
</div></div>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<span class="">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vda' bus='virtio'/><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'<br>
>     function='0x0'/><br>
>     > +    </disk><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <source protocol='iscsi' name='iqn.1992-01.com.example/<wbr>1'<br>
>     transport='iser'><br>
</span>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<div><div class="h5">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vdb' bus='virtio'/><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'<br>
>     function='0x0'/><br>
>     > +    </disk><br>
>     > +    <controller type='usb' index='0'><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'<br>
>     function='0x2'/><br>
>     > +    </controller><br>
>     > +    <controller type='pci' index='0' model='pci-root'/><br>
>     > +    <input type='mouse' bus='ps2'/><br>
>     > +    <input type='keyboard' bus='ps2'/><br>
>     > +    <memballoon model='none'/><br>
>     > +  </devices><br>
>     > +</domain><br>
>     > diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c<br>
>     > index cb010268c..59b26c647 100644<br>
>     > --- a/tests/qemuargv2xmltest.c<br>
>     > +++ b/tests/qemuargv2xmltest.c<br>
>     > @@ -213,6 +213,8 @@ mymain(void)<br>
>     >      DO_TEST("disk-drive-network-<wbr>nbd-unix");<br>
>     >      DO_TEST("disk-drive-network-<wbr>iscsi");<br>
>     >      DO_TEST("disk-drive-network-<wbr>iscsi-auth");<br>
>     > +    DO_TEST("disk-drive-network-<wbr>iser");<br>
>     > +    DO_TEST("disk-drive-network-<wbr>iser-auth");<br>
>     >      DO_TEST("disk-drive-network-<wbr>gluster");<br>
>     >      DO_TEST("disk-drive-network-<wbr>rbd");<br>
>     >      DO_TEST("disk-drive-network-<wbr>rbd-auth");<br>
>     > diff --git<br>
>     a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-<wbr>secrettype-invalid.xml<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-<wbr>secrettype-invalid.xml<br>
>     > new file mode 100644<br>
>     > index 000000000..dbcf484dc<br>
>     > --- /dev/null<br>
>     > +++<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-<wbr>secrettype-invalid.xml<br>
>     > @@ -0,0 +1,33 @@<br>
>     > +<domain type='qemu'><br>
>     > +  <name>QEMUGuest1</name><br>
>     > +  <uuid>c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809</uuid><br>
>     > +  <memory unit='KiB'>219136</memory><br>
>     > +  <currentMemory unit='KiB'>219136</<wbr>currentMemory><br>
>     > +  <vcpu placement='static'>1</vcpu><br>
>     > +  <os><br>
>     > +    <type arch='i686' machine='pc'>hvm</type><br>
>     > +    <boot dev='hd'/><br>
>     > +  </os><br>
>     > +  <clock offset='utc'/><br>
>     > +  <on_poweroff>destroy</on_<wbr>poweroff><br>
>     > +  <on_reboot>restart</on_reboot><br>
>     > +  <on_crash>destroy</on_crash><br>
>     > +  <devices><br>
>     > +    <emulator>/usr/bin/qemu-<wbr>system-i686</emulator><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <auth username='myname'><br>
>     > +        <secret usage='mycluster_myname'/><br>
>     > +      </auth><br>
>     > +      <source protocol='iscsi'<br>
>     name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
</div></div>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<div><div class="h5">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vda' bus='virtio'/><br>
>     > +    </disk><br>
>     > +    <controller type='usb' index='0'/><br>
>     > +    <controller type='pci' index='0' model='pci-root'/><br>
>     > +    <input type='mouse' bus='ps2'/><br>
>     > +    <input type='keyboard' bus='ps2'/><br>
>     > +    <memballoon model='none'/><br>
>     > +  </devices><br>
>     > +</domain><br>
>     > diff --git<br>
>     a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-wrong-<wbr>secrettype.xml<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-wrong-<wbr>secrettype.xml<br>
>     > new file mode 100644<br>
>     > index 000000000..5525e9d86<br>
>     > --- /dev/null<br>
>     > +++<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-wrong-<wbr>secrettype.xml<br>
>     > @@ -0,0 +1,33 @@<br>
>     > +<domain type='qemu'><br>
>     > +  <name>QEMUGuest1</name><br>
>     > +  <uuid>c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809</uuid><br>
>     > +  <memory unit='KiB'>219136</memory><br>
>     > +  <currentMemory unit='KiB'>219136</<wbr>currentMemory><br>
>     > +  <vcpu placement='static'>1</vcpu><br>
>     > +  <os><br>
>     > +    <type arch='i686' machine='pc'>hvm</type><br>
>     > +    <boot dev='hd'/><br>
>     > +  </os><br>
>     > +  <clock offset='utc'/><br>
>     > +  <on_poweroff>destroy</on_<wbr>poweroff><br>
>     > +  <on_reboot>restart</on_reboot><br>
>     > +  <on_crash>destroy</on_crash><br>
>     > +  <devices><br>
>     > +    <emulator>/usr/bin/qemu-<wbr>system-i686</emulator><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <auth username='myname'><br>
>     > +        <secret type='ceph' usage='mycluster_myname'/><br>
>     > +      </auth><br>
>     > +      <source protocol='iscsi'<br>
>     name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
</div></div>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<div><div class="h5">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vda' bus='virtio'/><br>
>     > +    </disk><br>
>     > +    <controller type='usb' index='0'/><br>
>     > +    <controller type='pci' index='0' model='pci-root'/><br>
>     > +    <input type='mouse' bus='ps2'/><br>
>     > +    <input type='keyboard' bus='ps2'/><br>
>     > +    <memballoon model='none'/><br>
>     > +  </devices><br>
>     > +</domain><br>
>     > diff --git<br>
>     a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.args<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.args<br>
>     > new file mode 100644<br>
>     > index 000000000..5fa7a04bb<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.args<br>
>     > @@ -0,0 +1,31 @@<br>
>     > +LC_ALL=C \<br>
>     > +PATH=/bin \<br>
>     > +HOME=/home/test \<br>
>     > +USER=test \<br>
>     > +LOGNAME=test \<br>
>     > +QEMU_AUDIO_DRV=none \<br>
>     > +/usr/bin/qemu-system-i686 \<br>
>     > +-name QEMUGuest1 \<br>
>     > +-S \<br>
>     > +-M pc \<br>
>     > +-m 214 \<br>
>     > +-smp 1,sockets=1,cores=1,threads=1 \<br>
>     > +-uuid c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809 \<br>
>     > +-nographic \<br>
>     > +-nodefaults \<br>
>     > +-chardev<br>
>     socket,id=charmonitor,path=/<wbr>tmp/lib/domain--1-QEMUGuest1/<wbr>monitor.sock,\<br>
>     > +server,nowait \<br>
>     > +-mon chardev=charmonitor,id=<wbr>monitor,mode=readline \<br>
>     > +-no-acpi \<br>
>     > +-boot c \<br>
>     > +-usb \<br>
>     > +-drive<br>
</div></div>>     file=iser://<a href="mailto:myname%3AAQCVn5hO6HzFAhAAq0NCv8jtJcIcE%2BHOBlMQ1A@example.org">myname:<wbr>AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+<wbr>HOBlMQ1A@example.org</a> <mailto:<a href="mailto:myname%253AAQCVn5hO6HzFAhAAq0NCv8jtJcIcE%252BHOBlMQ1A@example.org">myname%<wbr>3AAQCVn5hO6HzFAhAAq0NCv8jtJcIc<wbr>E%2BHOBlMQ1A@example.org</a>>:\<br>
<span class="">>     > +6000/iqn.1992-01.com.example%<wbr>3Astorage/1,format=raw,if=<wbr>none,\<br>
>     > +id=drive-virtio-disk0 \<br>
>     > +-device virtio-blk-pci,bus=pci.0,addr=<wbr>0x3,drive=drive-virtio-disk0,\<br>
>     > +id=virtio-disk0 \<br>
>     > +-drive<br>
</span>>     file=iser://<a href="mailto:myname%3AAQCVn5hO6HzFAhAAq0NCv8jtJcIcE%2BHOBlMQ1A@example.org">myname:<wbr>AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+<wbr>HOBlMQ1A@example.org</a> <mailto:<a href="mailto:myname%253AAQCVn5hO6HzFAhAAq0NCv8jtJcIcE%252BHOBlMQ1A@example.org">myname%<wbr>3AAQCVn5hO6HzFAhAAq0NCv8jtJcIc<wbr>E%2BHOBlMQ1A@example.org</a>>:\<br>
<div><div class="h5">>     > +6000/iqn.1992-01.com.example%<wbr>3Astorage/2,format=raw,if=<wbr>none,\<br>
>     > +id=drive-virtio-disk1 \<br>
>     > +-device virtio-blk-pci,bus=pci.0,addr=<wbr>0x4,drive=drive-virtio-disk1,\<br>
>     > +id=virtio-disk1<br>
>     > diff --git<br>
>     a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.xml<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.xml<br>
>     > new file mode 100644<br>
>     > index 000000000..fbcb6b4f1<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.xml<br>
>     > @@ -0,0 +1,43 @@<br>
>     > +<domain type='qemu'><br>
>     > +  <name>QEMUGuest1</name><br>
>     > +  <uuid>c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809</uuid><br>
>     > +  <memory unit='KiB'>219136</memory><br>
>     > +  <currentMemory unit='KiB'>219136</<wbr>currentMemory><br>
>     > +  <vcpu placement='static'>1</vcpu><br>
>     > +  <os><br>
>     > +    <type arch='i686' machine='pc'>hvm</type><br>
>     > +    <boot dev='hd'/><br>
>     > +  </os><br>
>     > +  <clock offset='utc'/><br>
>     > +  <on_poweroff>destroy</on_<wbr>poweroff><br>
>     > +  <on_reboot>restart</on_reboot><br>
>     > +  <on_crash>destroy</on_crash><br>
>     > +  <devices><br>
>     > +    <emulator>/usr/bin/qemu-<wbr>system-i686</emulator><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <auth username='myname'><br>
>     > +        <secret type='iscsi' usage='mycluster_myname'/><br>
>     > +      </auth><br>
>     > +      <source protocol='iscsi'<br>
>     name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
</div></div>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<span class="">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vda' bus='virtio'/><br>
>     > +    </disk><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <auth username='myname'><br>
>     > +        <secret type='iscsi' usage='mycluster_myname'/><br>
>     > +      </auth><br>
>     > +      <source protocol='iscsi'<br>
>     name='iqn.1992-01.com.example:<wbr>storage/2' transport='iser'><br>
</span>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<div><div class="h5">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vdb' bus='virtio'/><br>
>     > +    </disk><br>
>     > +    <controller type='usb' index='0'/><br>
>     > +    <controller type='pci' index='0' model='pci-root'/><br>
>     > +    <input type='mouse' bus='ps2'/><br>
>     > +    <input type='keyboard' bus='ps2'/><br>
>     > +    <memballoon model='none'/><br>
>     > +  </devices><br>
>     > +</domain><br>
>     > diff --git<br>
>     a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.args<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.args<br>
>     > new file mode 100644<br>
>     > index 000000000..d9428533b<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.args<br>
>     > @@ -0,0 +1,27 @@<br>
>     > +LC_ALL=C \<br>
>     > +PATH=/bin \<br>
>     > +HOME=/home/test \<br>
>     > +USER=test \<br>
>     > +LOGNAME=test \<br>
>     > +QEMU_AUDIO_DRV=none \<br>
>     > +/usr/bin/qemu-system-i686 \<br>
>     > +-name QEMUGuest1 \<br>
>     > +-S \<br>
>     > +-M pc \<br>
>     > +-m 214 \<br>
>     > +-smp 1,sockets=1,cores=1,threads=1 \<br>
>     > +-uuid c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809 \<br>
>     > +-nographic \<br>
>     > +-nodefconfig \<br>
>     > +-nodefaults \<br>
>     > +-chardev<br>
>     socket,id=charmonitor,path=/<wbr>tmp/lib/domain--1-QEMUGuest1/<wbr>monitor.sock,\<br>
>     > +server,nowait \<br>
>     > +-mon chardev=charmonitor,id=<wbr>monitor,mode=readline \<br>
>     > +-no-acpi \<br>
>     > +-boot c \<br>
>     > +-device virtio-scsi-pci,id=scsi0,bus=<wbr>pci.0,addr=0x3 \<br>
>     > +-usb \<br>
>     > +-drive<br>
>     file=iser://<a href="http://example.org:3260/iqn.1992-01.com.example/0,format=raw,\" rel="noreferrer" target="_blank">example.org:3260/<wbr>iqn.1992-01.com.example/0,<wbr>format=raw,\</a><br>
</div></div>>     <<a href="http://example.org:3260/iqn.1992-01.com.example/0,format=raw,\" rel="noreferrer" target="_blank">http://example.org:3260/iqn.<wbr>1992-01.com.example/0,format=<wbr>raw,\</a>><br>
<div><div class="h5">>     > +if=none,id=drive-scsi0-0-0-0 \<br>
>     > +-device scsi-block,bus=scsi0.0,<wbr>channel=0,scsi-id=0,lun=0,\<br>
>     > +drive=drive-scsi0-0-0-0,id=<wbr>scsi0-0-0-0<br>
>     > diff --git<br>
>     a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.xml<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.xml<br>
>     > new file mode 100644<br>
>     > index 000000000..25fa76140<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.xml<br>
>     > @@ -0,0 +1,28 @@<br>
>     > +<domain type='qemu'><br>
>     > +  <name>QEMUGuest1</name><br>
>     > +  <uuid>c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809</uuid><br>
>     > +  <memory unit='KiB'>219136</memory><br>
>     > +  <currentMemory unit='KiB'>219136</<wbr>currentMemory><br>
>     > +  <vcpu placement='static'>1</vcpu><br>
>     > +  <os><br>
>     > +    <type arch='i686' machine='pc'>hvm</type><br>
>     > +    <boot dev='hd'/><br>
>     > +  </os><br>
>     > +  <clock offset='utc'/><br>
>     > +  <on_poweroff>destroy</on_<wbr>poweroff><br>
>     > +  <on_reboot>restart</on_reboot><br>
>     > +  <on_crash>destroy</on_crash><br>
>     > +  <devices><br>
>     > +    <emulator>/usr/bin/qemu-<wbr>system-i686</emulator><br>
>     > +    <disk type='network' device='lun'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <source protocol='iscsi' name='iqn.1992-01.com.example'<br>
>     transport='iser'><br>
</div></div>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='3260'<br>
<div><div class="h5">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='sda' bus='scsi'/><br>
>     > +    </disk><br>
>     > +    <controller type='usb' index='0'/><br>
>     > +    <controller type='scsi' index='0' model='virtio-scsi'/><br>
>     > +    <memballoon model='none'/><br>
>     > +  </devices><br>
>     > +</domain><br>
>     > diff --git a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.args<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.args<br>
>     > new file mode 100644<br>
>     > index 000000000..49ea467ff<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.args<br>
>     > @@ -0,0 +1,29 @@<br>
>     > +LC_ALL=C \<br>
>     > +PATH=/bin \<br>
>     > +HOME=/home/test \<br>
>     > +USER=test \<br>
>     > +LOGNAME=test \<br>
>     > +QEMU_AUDIO_DRV=none \<br>
>     > +/usr/bin/qemu-system-i686 \<br>
>     > +-name QEMUGuest1 \<br>
>     > +-S \<br>
>     > +-M pc \<br>
>     > +-m 214 \<br>
>     > +-smp 1,sockets=1,cores=1,threads=1 \<br>
>     > +-uuid c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809 \<br>
>     > +-nographic \<br>
>     > +-nodefaults \<br>
>     > +-chardev<br>
>     socket,id=charmonitor,path=/<wbr>tmp/lib/domain--1-QEMUGuest1/<wbr>monitor.sock,\<br>
>     > +server,nowait \<br>
>     > +-mon chardev=charmonitor,id=<wbr>monitor,mode=readline \<br>
>     > +-no-acpi \<br>
>     > +-boot c \<br>
>     > +-usb \<br>
>     > +-drive<br>
>     file=iser://<a href="http://example.org:6000/iqn.1992-01.com.example/0,format=raw,\" rel="noreferrer" target="_blank">example.org:6000/<wbr>iqn.1992-01.com.example/0,<wbr>format=raw,\</a><br>
</div></div>>     <<a href="http://example.org:6000/iqn.1992-01.com.example/0,format=raw,\" rel="noreferrer" target="_blank">http://example.org:6000/iqn.<wbr>1992-01.com.example/0,format=<wbr>raw,\</a>><br>
<span class="">>     > +if=none,id=drive-virtio-disk0 \<br>
>     > +-device virtio-blk-pci,bus=pci.0,addr=<wbr>0x3,drive=drive-virtio-disk0,\<br>
>     > +id=virtio-disk0 \<br>
>     > +-drive<br>
>     file=iser://<a href="http://example.org:6000/iqn.1992-01.com.example/1,format=raw,\" rel="noreferrer" target="_blank">example.org:6000/<wbr>iqn.1992-01.com.example/1,<wbr>format=raw,\</a><br>
</span>>     <<a href="http://example.org:6000/iqn.1992-01.com.example/1,format=raw,\" rel="noreferrer" target="_blank">http://example.org:6000/iqn.<wbr>1992-01.com.example/1,format=<wbr>raw,\</a>><br>
<div><div class="h5">>     > +if=none,id=drive-virtio-disk1 \<br>
>     > +-device virtio-blk-pci,bus=pci.0,addr=<wbr>0x4,drive=drive-virtio-disk1,\<br>
>     > +id=virtio-disk1<br>
>     > diff --git a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.xml<br>
>     b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.xml<br>
>     > new file mode 100644<br>
>     > index 000000000..b1634555c<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.xml<br>
>     > @@ -0,0 +1,37 @@<br>
>     > +<domain type='qemu'><br>
>     > +  <name>QEMUGuest1</name><br>
>     > +  <uuid>c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809</uuid><br>
>     > +  <memory unit='KiB'>219136</memory><br>
>     > +  <currentMemory unit='KiB'>219136</<wbr>currentMemory><br>
>     > +  <vcpu placement='static'>1</vcpu><br>
>     > +  <os><br>
>     > +    <type arch='i686' machine='pc'>hvm</type><br>
>     > +    <boot dev='hd'/><br>
>     > +  </os><br>
>     > +  <clock offset='utc'/><br>
>     > +  <on_poweroff>destroy</on_<wbr>poweroff><br>
>     > +  <on_reboot>restart</on_reboot><br>
>     > +  <on_crash>destroy</on_crash><br>
>     > +  <devices><br>
>     > +    <emulator>/usr/bin/qemu-<wbr>system-i686</emulator><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <source protocol='iscsi' name='iqn.1992-01.com.example'<br>
>     transport='iser'><br>
</div></div>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'/><br>
<span class="">>     > +      </source><br>
>     > +      <target dev='vda' bus='virtio'/><br>
>     > +    </disk><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <source protocol='iscsi' name='iqn.1992-01.com.example/<wbr>1'<br>
>     transport='iser'><br>
</span>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'/><br>
<div><div class="h5">>     > +      </source><br>
>     > +      <target dev='vdb' bus='virtio'/><br>
>     > +    </disk><br>
>     > +    <controller type='usb' index='0'/><br>
>     > +    <controller type='pci' index='0' model='pci-root'/><br>
>     > +    <input type='mouse' bus='ps2'/><br>
>     > +    <input type='keyboard' bus='ps2'/><br>
>     > +    <memballoon model='none'/><br>
>     > +  </devices><br>
>     > +</domain><br>
>     > diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c<br>
>     > index be32d891e..dcb35f017 100644<br>
>     > --- a/tests/qemuxml2argvtest.c<br>
>     > +++ b/tests/qemuxml2argvtest.c<br>
>     > @@ -939,6 +939,13 @@ mymain(void)<br>
>     >      DO_TEST("disk-drive-network-<wbr>iscsi-lun",<br>
>     >              QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI,<br>
>     >              QEMU_CAPS_SCSI_BLOCK);<br>
>     > +    DO_TEST("disk-drive-network-<wbr>iser", NONE);<br>
>     > +    DO_TEST("disk-drive-network-<wbr>iser-auth", NONE);<br>
>     > +   <br>
>     DO_TEST_PARSE_ERROR("disk-<wbr>drive-network-iser-auth-<wbr>secrettype-invalid",<br>
>     NONE);<br>
>     > +   <br>
>     DO_TEST_PARSE_ERROR("disk-<wbr>drive-network-iser-auth-wrong-<wbr>secrettype",<br>
>     NONE);<br>
>     > +    DO_TEST("disk-drive-network-<wbr>iser-lun",<br>
>     > +            QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_VIRTIO_SCSI,<br>
>     > +            QEMU_CAPS_SCSI_BLOCK);<br>
>     >      DO_TEST("disk-drive-network-<wbr>gluster",<br>
>     >              QEMU_CAPS_GLUSTER_DEBUG_LEVEL)<wbr>;<br>
>     >      DO_TEST("disk-drive-network-<wbr>rbd", NONE);<br>
>     > diff --git<br>
>     a/tests/qemuxml2xmloutdata/<wbr>disk-drive-network-iser-auth.<wbr>xml<br>
>     b/tests/qemuxml2xmloutdata/<wbr>disk-drive-network-iser-auth.<wbr>xml<br>
>     > new file mode 100644<br>
>     > index 000000000..1b27fdea2<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuxml2xmloutdata/<wbr>disk-drive-network-iser-auth.<wbr>xml<br>
>     > @@ -0,0 +1,47 @@<br>
>     > +<domain type='qemu'><br>
>     > +  <name>QEMUGuest1</name><br>
>     > +  <uuid>c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809</uuid><br>
>     > +  <memory unit='KiB'>219136</memory><br>
>     > +  <currentMemory unit='KiB'>219136</<wbr>currentMemory><br>
>     > +  <vcpu placement='static'>1</vcpu><br>
>     > +  <os><br>
>     > +    <type arch='i686' machine='pc'>hvm</type><br>
>     > +    <boot dev='hd'/><br>
>     > +  </os><br>
>     > +  <clock offset='utc'/><br>
>     > +  <on_poweroff>destroy</on_<wbr>poweroff><br>
>     > +  <on_reboot>restart</on_reboot><br>
>     > +  <on_crash>destroy</on_crash><br>
>     > +  <devices><br>
>     > +    <emulator>/usr/bin/qemu-<wbr>system-i686</emulator><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <auth username='myname'><br>
>     > +        <secret type='iscsi' usage='mycluster_myname'/><br>
>     > +      </auth><br>
>     > +      <source protocol='iscsi'<br>
>     name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
</div></div>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<span class="">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vda' bus='virtio'/><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'<br>
>     function='0x0'/><br>
>     > +    </disk><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <auth username='myname'><br>
>     > +        <secret type='iscsi' usage='mycluster_myname'/><br>
>     > +      </auth><br>
>     > +      <source protocol='iscsi'<br>
>     name='iqn.1992-01.com.example:<wbr>storage/2' transport='iser'><br>
</span>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<div><div class="h5">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vdb' bus='virtio'/><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'<br>
>     function='0x0'/><br>
>     > +    </disk><br>
>     > +    <controller type='usb' index='0'><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'<br>
>     function='0x2'/><br>
>     > +    </controller><br>
>     > +    <controller type='pci' index='0' model='pci-root'/><br>
>     > +    <input type='mouse' bus='ps2'/><br>
>     > +    <input type='keyboard' bus='ps2'/><br>
>     > +    <memballoon model='none'/><br>
>     > +  </devices><br>
>     > +</domain><br>
>     > diff --git a/tests/qemuxml2xmloutdata/<wbr>disk-drive-network-iser.xml<br>
>     b/tests/qemuxml2xmloutdata/<wbr>disk-drive-network-iser.xml<br>
>     > new file mode 100644<br>
>     > index 000000000..88f043f66<br>
>     > --- /dev/null<br>
>     > +++ b/tests/qemuxml2xmloutdata/<wbr>disk-drive-network-iser.xml<br>
>     > @@ -0,0 +1,41 @@<br>
>     > +<domain type='qemu'><br>
>     > +  <name>QEMUGuest1</name><br>
>     > +  <uuid>c7a5fdbd-edaf-9455-926a-<wbr>d65c16db1809</uuid><br>
>     > +  <memory unit='KiB'>219136</memory><br>
>     > +  <currentMemory unit='KiB'>219136</<wbr>currentMemory><br>
>     > +  <vcpu placement='static'>1</vcpu><br>
>     > +  <os><br>
>     > +    <type arch='i686' machine='pc'>hvm</type><br>
>     > +    <boot dev='hd'/><br>
>     > +  </os><br>
>     > +  <clock offset='utc'/><br>
>     > +  <on_poweroff>destroy</on_<wbr>poweroff><br>
>     > +  <on_reboot>restart</on_reboot><br>
>     > +  <on_crash>destroy</on_crash><br>
>     > +  <devices><br>
>     > +    <emulator>/usr/bin/qemu-<wbr>system-i686</emulator><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <source protocol='iscsi' name='iqn.1992-01.com.example/<wbr>0'<br>
>     transport='iser'><br>
</div></div>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<span class="">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vda' bus='virtio'/><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03'<br>
>     function='0x0'/><br>
>     > +    </disk><br>
>     > +    <disk type='network' device='disk'><br>
>     > +      <driver name='qemu' type='raw'/><br>
>     > +      <source protocol='iscsi' name='iqn.1992-01.com.example/<wbr>1'<br>
>     transport='iser'><br>
</span>>     > +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a> <<a href="http://example.org" rel="noreferrer" target="_blank">http://example.org</a>>' port='6000'<br>
<div class="HOEnZb"><div class="h5">>     transport='iser'/><br>
>     > +      </source><br>
>     > +      <target dev='vdb' bus='virtio'/><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04'<br>
>     function='0x0'/><br>
>     > +    </disk><br>
>     > +    <controller type='usb' index='0'><br>
>     > +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01'<br>
>     function='0x2'/><br>
>     > +    </controller><br>
>     > +    <controller type='pci' index='0' model='pci-root'/><br>
>     > +    <input type='mouse' bus='ps2'/><br>
>     > +    <input type='keyboard' bus='ps2'/><br>
>     > +    <memballoon model='none'/><br>
>     > +  </devices><br>
>     > +</domain><br>
>     > diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c<br>
>     > index 2be8eb2c1..aeeda2dd1 100644<br>
>     > --- a/tests/qemuxml2xmltest.c<br>
>     > +++ b/tests/qemuxml2xmltest.c<br>
>     > @@ -515,6 +515,8 @@ mymain(void)<br>
>     >      DO_TEST("disk-drive-network-<wbr>nbd-unix", NONE);<br>
>     >      DO_TEST("disk-drive-network-<wbr>iscsi", NONE);<br>
>     >      DO_TEST("disk-drive-network-<wbr>iscsi-auth", NONE);<br>
>     > +    DO_TEST("disk-drive-network-<wbr>iser", NONE);<br>
>     > +    DO_TEST("disk-drive-network-<wbr>iser-auth", NONE);<br>
>     >      DO_TEST("disk-drive-network-<wbr>gluster", NONE);<br>
>     >      DO_TEST("disk-drive-network-<wbr>rbd", NONE);<br>
>     >      DO_TEST("disk-drive-network-<wbr>rbd-auth", NONE);<br>
>     ><br>
><br>
><br>
</div></div></blockquote></div><br></div>