<div dir="ltr">Hello John,<div><br></div><div>I have questions:</div><div><br></div><div>>><span style="font-size:12.800000190734863px">This and the Parse makes no sense when compared to the 3 possible</span></div><span style="font-size:12.800000190734863px">options.  That is, it's possible to have "tcp", "rdma", and "iser", but</span><br style="font-size:12.800000190734863px"><span style="font-size:12.800000190734863px">you only care about "iser".</span><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">This is because for other types are optional, there was no this line here, therefor I added this and only care iser.</span></div><div><span style="font-size:12.800000190734863px"><br></span></div><div><span style="font-size:12.800000190734863px">>Consider using a local @transport... I didn't check if src->hosts could</span><br style="font-size:12.800000190734863px"><span style="font-size:12.800000190734863px">be NULL here...</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">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?</span></div><div><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 those samples like </span><span style="font-size:12.800000190734863px">"auth"</span><span style="font-size:12.800000190734863px">, 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..</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">Why do both <source> and <host> get the transport='iser'?</span></div><div><span style="font-size:12.800000190734863px">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.</span></div><div><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"><br></span></div><div><span style="font-size:12.800000190734863px">Best Regards,</span></div><div><span style="font-size:12.800000190734863px">Charles.</span></div><div><span style="font-size:12.800000190734863px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jan 17, 2018 at 7:10 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/16/2018 03:52 AM, <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>
><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> and<br>
the commit message should also describe the new XML being added - there<br>
are many examples.<br>
<div><div class="h5"><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>
>  .../qemuargv2xmldata/disk-<wbr>drive-network-iser.args  | 25 ++++++++++++<br>
>  tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.xml | 41 +++++++++++++++++++<br>
>  tests/qemuargv2xmltest.c                           |  2 +<br>
>  ...-drive-network-iser-auth-<wbr>secrettype-invalid.xml | 33 +++++++++++++++<br>
>  ...sk-drive-network-iser-auth-<wbr>wrong-secrettype.xml | 33 +++++++++++++++<br>
>  .../disk-drive-network-iser-<wbr>auth.args              | 31 ++++++++++++++<br>
>  .../disk-drive-network-iser-<wbr>auth.xml               | 43 ++++++++++++++++++++<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>
>  tests/qemuxml2argvtest.c                           |  7 ++++<br>
>  .../disk-drive-network-iser-<wbr>auth.xml               | 47 ++++++++++++++++++++++<br>
>  .../qemuxml2xmloutdata/disk-<wbr>drive-network-iser.xml | 41 +++++++++++++++++++<br>
>  tests/qemuxml2xmltest.c                            |  2 +<br>
>  25 files changed, 569 insertions(+), 4 deletions(-)<br>
>  create mode 100644 tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.args<br>
>  create mode 100644 tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.xml<br>
>  create mode 100644 tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.args<br>
>  create mode 100644 tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.xml<br>
>  create mode 100644 tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-<wbr>secrettype-invalid.xml<br>
>  create mode 100644 tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-wrong-<wbr>secrettype.xml<br>
>  create mode 100644 tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.args<br>
>  create mode 100644 tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.xml<br>
>  create mode 100644 tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.args<br>
>  create mode 100644 tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.xml<br>
>  create mode 100644 tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.args<br>
>  create mode 100644 tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.xml<br>
>  create mode 100644 tests/qemuxml2xmloutdata/disk-<wbr>drive-network-iser-auth.xml<br>
>  create mode 100644 tests/qemuxml2xmloutdata/disk-<wbr>drive-network-iser.xml<br>
><br>
> diff --git a/docs/schemas/domaincommon.<wbr>rng 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>
</div></div>This is adding the attribute for the <disk> <source> <host>, so why is<br>
it also necessary on the <source ...> line after protocol...<br>
<span class=""><br>
>                </choice><br>
>              </attribute><br>
>            </optional><br>
> @@ -1613,6 +1614,15 @@<br>
>        <optional><br>
>          <ref name="encryption"/><br>
>        </optional><br>
> +      <optional><br>
<br>
</span>So this is the <disk> <source> transport attribute?<br>
<span class=""><br>
> +        <attribute name="transport"><br>
> +          <choice><br>
> +            <value>tcp</value><br>
> +            <value>rdma</value><br>
> +            <value>iser</value><br>
> +          </choice><br>
> +        </attribute><br>
<br>
</span>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>
<span class=""><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>
</span>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 domain_conf...<br>
<span class=""><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>
</span>And this is for the <hostdev> <source> <host><br>
<span class=""><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>
</span>@transport is leaked<br>
<br>
Why only parsed for "<host>" but the RNG has <source> and <host>?<br>
<span class=""><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>
</span>extraneous blank line<br>
<span class=""><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>
</span>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>
<div><div class="h5"><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 @@ qemuBlockStorageSourceGetURI(<wbr>virStorageSourcePtr src)<br>
>          if (VIR_STRDUP(uri->scheme,<br>
>                         virStorageNetProtocolTypeToStr<wbr>ing(src->protocol)) < 0)<br>
>              goto cleanup;<br>
> +    } else if (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER) {<br>
> +        uri->port = src->hosts->port;<br>
> +<br>
> +        if (VIR_STRDUP(uri->scheme,<br>
> +                       virStorageNetHostTransportType<wbr>ToString(src->hosts-><wbr>transport)) < 0)<br>
> +            goto cleanup;<br>
>      } else {<br>
>          if (virAsprintf(&uri->scheme, "%s+%s",<br>
>                          virStorageNetProtocolTypeToStr<wbr>ing(src->protocol),<br>
> @@ -506,6 +512,19 @@ qemuBlockStorageSourceBuildJSO<wbr>NSocketAddress(<wbr>virStorageNetHostDefPtr host,<br>
>              goto cleanup;<br>
>          break;<br>
><br>
> +    case VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER:<br>
> +        transport = "iser";<br>
<br>
</div></div>again TypeToString should be used...<br>
<span class=""><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>
</span>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>
<span class=""><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>
</span>Consider using a local @transport... I didn't check if src->hosts could<br>
be NULL here...<br>
<div><div class="h5"><br>
>                                            "S:user", username,<br>
>                                            "S:password-secret", 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>
>                    (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_TCP &&<br>
>                     !src->hosts->name) ||<br>
> +                  (src->hosts->transport == VIR_STORAGE_NET_HOST_TRANS_<wbr>ISER &&<br>
> +                   !src->hosts->name) ||<br>
>                    (src->hosts->transport == 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, src->hosts->port);<br>
>                      break;<br>
> diff --git a/src/qemu/qemu_parse_command.<wbr>c 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, 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>
</div></div><sigh><br>
<br>
At least you attempted the parse code - it's largely forgotten.<br>
<div><div class="h5"><br>
> +    } else if (STRNEQ(uri->scheme, scheme)) {<br>
>          virReportError(VIR_ERR_<wbr>INTERNAL_ERROR,<br>
>                         _("Invalid transport/scheme '%s'"), uri->scheme);<br>
>          goto error;<br>
> @@ -709,6 +711,12 @@ 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 = 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 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 @@ virStorageFileBackendGlusterIn<wbr>itServer(<wbr>virStorageFileBackendGlusterPr<wbr>ivPtr 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, VIR_STORAGE_NET_PROTOCOL_LAST,<br>
>  VIR_ENUM_IMPL(<wbr>virStorageNetHostTransport, 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 a/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.args 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 file=iser://<a href="mailto:myname%3AAQCVn5hO6HzFAhAAq0NCv8jtJcIcE%2BHOBlMQ1A@example.org">myname:<wbr>AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+<wbr>HOBlMQ1A@example.org</a>:\<br>
> +6000/iqn.1992-01.com.example%<wbr>3Astorage/1,format=raw,if=<wbr>virtio \<br>
> +-drive 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>
> +format=raw,if=virtio \<br>
> +-net none \<br>
> +-serial none \<br>
> +-parallel none<br>
> diff --git a/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser-auth.xml 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' name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' transport='iser'/><br>
<br>
</div></div>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>
<span class="HOEnZb"><font color="#888888"><br>
John<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
> +      </source><br>
> +      <target dev='vda' bus='virtio'/><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 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>storage/2' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' transport='iser'/><br>
> +      </source><br>
> +      <target dev='vdb' bus='virtio'/><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/><br>
> +    </disk><br>
> +    <controller type='usb' index='0'><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 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 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 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>
> +if=virtio \<br>
> +-drive 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>
> +if=virtio \<br>
> +-net none \<br>
> +-serial none \<br>
> +-parallel none<br>
> diff --git a/tests/qemuargv2xmldata/disk-<wbr>drive-network-iser.xml 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' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' transport='iser'/><br>
> +      </source><br>
> +      <target dev='vda' bus='virtio'/><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 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' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' transport='iser'/><br>
> +      </source><br>
> +      <target dev='vdb' bus='virtio'/><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/><br>
> +    </disk><br>
> +    <controller type='usb' index='0'><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 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 a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-<wbr>secrettype-invalid.xml 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>
> +++ 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' name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' 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 a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth-wrong-<wbr>secrettype.xml 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>
> +++ 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' name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' 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 a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.args 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 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 file=iser://<a href="mailto:myname%3AAQCVn5hO6HzFAhAAq0NCv8jtJcIcE%2BHOBlMQ1A@example.org">myname:<wbr>AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+<wbr>HOBlMQ1A@example.org</a>:\<br>
> +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 file=iser://<a href="mailto:myname%3AAQCVn5hO6HzFAhAAq0NCv8jtJcIcE%2BHOBlMQ1A@example.org">myname:<wbr>AQCVn5hO6HzFAhAAq0NCv8jtJcIcE+<wbr>HOBlMQ1A@example.org</a>:\<br>
> +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 a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-auth.xml 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' name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' 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' name='iqn.1992-01.com.example:<wbr>storage/2' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' 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 a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.args 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 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 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>
> +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 a/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser-lun.xml 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' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='3260' 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 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 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 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>
> +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 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>
> +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 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' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000'/><br>
> +      </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' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000'/><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 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>
> +    DO_TEST_PARSE_ERROR("disk-<wbr>drive-network-iser-auth-<wbr>secrettype-invalid", NONE);<br>
> +    DO_TEST_PARSE_ERROR("disk-<wbr>drive-network-iser-auth-wrong-<wbr>secrettype", 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 a/tests/qemuxml2xmloutdata/<wbr>disk-drive-network-iser-auth.<wbr>xml 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' name='iqn.1992-01.com.example:<wbr>storage/1' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' transport='iser'/><br>
> +      </source><br>
> +      <target dev='vda' bus='virtio'/><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 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' name='iqn.1992-01.com.example:<wbr>storage/2' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' transport='iser'/><br>
> +      </source><br>
> +      <target dev='vdb' bus='virtio'/><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/><br>
> +    </disk><br>
> +    <controller type='usb' index='0'><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 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 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' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' transport='iser'/><br>
> +      </source><br>
> +      <target dev='vda' bus='virtio'/><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 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' transport='iser'><br>
> +        <host name='<a href="http://example.org" rel="noreferrer" target="_blank">example.org</a>' port='6000' transport='iser'/><br>
> +      </source><br>
> +      <target dev='vdb' bus='virtio'/><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/><br>
> +    </disk><br>
> +    <controller type='usb' index='0'><br>
> +      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' 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>
</div></div></blockquote></div><br></div>