<div dir="ltr">I made clear why it create iscsi+iser, not only that the system have many place expect iscsi+iser type of strings, like qemuParseDriveURIString.<div>but actually for qemu command line, iser://example.org... can work while iscsi+iser will not, how should I do?</div><div>Currently for json type of command line in qemu can work for me, if need to use "iser://" and let disk-drive-network-iser.args to work, need to modify many place like qemuParseDriveURIString</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Dec 15, 2017 at 11:47 AM, Charles Kelimod <span dir="ltr"><<a href="mailto:lichstor@gmail.com" target="_blank">lichstor@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thank you for your patience, I regret for my first time submit here that brings so may mistakes. <div><br></div><div>I have done almost changes that you have mentioned. Now I have a question:</div><div>I created drive-file-network-args.xml in test, and there is: -drive file=iser://<a href="http://example.org:6000/iqn.1992-01.com.example/1,format=raw" target="_blank">example.org:6000/<wbr>iqn.1992-01.com.example/1,<wbr>format=raw</a></div><div>but the system create -drive file=iscsi+iser://<a href="http://example.org:6000/iqn.1992-01.com.example/1,format=raw" target="_blank">example.org:<wbr>6000/iqn.1992-01.com.example/<wbr>1,format=raw</a></div><div>I doubt why it create iscsi+iser?</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Dec 14, 2017 at 7:35 PM, Peter Krempa <span dir="ltr"><<a href="mailto:pkrempa@redhat.com" target="_blank">pkrempa@redhat.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, Dec 14, 2017 at 18:14:36 +0800, <a href="mailto:lichstor@gmail.com" target="_blank">lichstor@gmail.com</a> wrote:<br>
> From: zhangshengyu <<a href="mailto:zhangshengyu@fusionstack.cn" target="_blank">zhangshengyu@fusionstack.cn</a>><br>
<br>
As pointed out last time, please follow the contributor guidelines. You<br>
did not run make syntax-check. Also the contributor guidelines state<br>
that you should write a commit message. I asked last time for that too.<br>
<br>
Please note that I will NOT review any other version until you follow<br>
the contributor guidelines at:<br>
<br>
<a href="https://libvirt.org/hacking.html" rel="noreferrer" target="_blank">https://libvirt.org/hacking.ht<wbr>ml</a><br>
<br>
See below for reasons.<br>
<span><br>
><br>
> ---<br>
>  src/conf/domain_conf.c                             | 13 ++++++++<br>
>  src/qemu/qemu_block.c                              | 17 +++++++++-<br>
>  src/util/virstoragefile.c                          |  3 +-<br>
>  src/util/virstoragefile.h                          |  1 +<br>
>  tests/qemuxml2argvdata/disk-dr<wbr>ive-network-iser.xml | 37 ++++++++++++++++++++++<br>
>  5 files changed, 69 insertions(+), 2 deletions(-)<br>
>  create mode 100644 tests/qemuxml2argvdata/disk-dr<wbr>ive-network-iser.xml<br>
><br>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c<br>
> index 66e21c4bd..bf20cfd0c 100644<br>
> --- a/src/conf/domain_conf.c<br>
> +++ b/src/conf/domain_conf.c<br>
> @@ -7201,6 +7201,9 @@ virDomainHostdevSubsysSCSIiSCS<wbr>IDefParseXML(xmlNodePtr sourcenode,<br>
>      iscsisrc->src->type = VIR_STORAGE_TYPE_NETWORK;<br>
>      iscsisrc->src->protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI<wbr>;<br>
><br>
> +virReportError(VIR_ERR_CONFIG<wbr>_UNSUPPORTED,<br>
> +                           _("virDomainHostdevSubsysSCSI<wbr>iSCSIDefParseXML"));<br>
> +<br>
<br>
</span>Is this leftover debugging? it's certainly aligned wrongly and does not<br>
make sense at all.<br>
<span><br>
>      if (!(iscsisrc->src->path = virXMLPropString(sourcenode, "name"))) {<br>
>          virReportError(VIR_ERR_XML_ERR<wbr>OR, "%s",<br>
>                         _("missing iSCSI hostdev source path name"));<br>
> @@ -8416,6 +8419,7 @@ virDomainDiskSourceNetworkPars<wbr>e(xmlNodePtr node,<br>
>                                  unsigned int flags)<br>
>  {<br>
>      char *protocol = NULL;<br>
> +    char *transport = NULL;<br>
>      char *haveTLS = NULL;<br>
>      char *tlsCfg = NULL;<br>
>      int tlsCfgVal;<br>
> @@ -8427,6 +8431,10 @@ virDomainDiskSourceNetworkPars<wbr>e(xmlNodePtr node,<br>
>          goto cleanup;<br>
>      }<br>
><br>
> +    if (!(transport = virXMLPropString(node, "transport"))) {<br>
> +        VIR_WARN("missing network source transport type");<br>
<br>
</span>It will be missing for all other protocols. You can't just do that.<br>
<span><br>
> +    }<br>
> +<br>
>      if ((src->protocol = virStorageNetProtocolTypeFromS<wbr>tring(protocol)) <= 0) {<br>
>          virReportError(VIR_ERR_CONFIG_<wbr>UNSUPPORTED,<br>
>                         _("unknown protocol type '%s'"), protocol);<br>
> @@ -8495,6 +8503,9 @@ virDomainDiskSourceNetworkPars<wbr>e(xmlNodePtr node,<br>
>      if (virDomainStorageNetworkParseH<wbr>osts(node, &src->hosts, &src->nhosts) < 0)<br>
>          goto cleanup;<br>
><br>
> +    if(src->hosts)<br>
> +        src->hosts->transport = virStorageNetHostTransportType<wbr>FromString(transport);<br>
<br>
</span>This is plain wrong. virDomainStorageNetworkParseHo<wbr>sts should parse<br>
this.<br>
<span><br>
> +<br>
>      virStorageSourceNetworkAssignD<wbr>efaultPorts(src);<br>
><br>
>      ret = 0;<br>
> @@ -22326,6 +22337,8 @@ virDomainDiskSourceFormatNetwo<wbr>rk(virBufferPtr attrBuf,<br>
><br>
>      VIR_FREE(path);<br>
><br>
> +    virBufferEscapeString(attrBuf, " transport='%s'", "iser");<br>
<br>
</span>What?!?! How is this even supposed to work? Did you even bother running<br>
make check?!?! This breaks 9 test suites.<br>
<div><div class="m_-8116138281067736694h5"><br>
> +<br>
>      if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&<br>
>          !(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATAB<wbr>LE &&<br>
>            src->tlsFromConfig))<br>
> diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c<br>
> index 585f0255e..dcd7c6a5e 100644<br>
> --- a/src/qemu/qemu_block.c<br>
> +++ b/src/qemu/qemu_block.c<br>
> @@ -506,6 +506,20 @@ qemuBlockStorageSourceBuildJSO<wbr>NSocketAddress(virStorageNetHo<wbr>stDefPtr host,<br>
>              goto cleanup;<br>
>          break;<br>
><br>
> +    case VIR_STORAGE_NET_HOST_TRANS_ISE<wbr>R:<br>
> +        transport = "iser";<br>
> +        if (virAsprintf(&port, "%u", host->port) < 0)<br>
> +            goto cleanup;<br>
> +<br>
> +        if (virJSONValueObjectCreate(&ser<wbr>ver,<br>
> +                                     "s:type", transport,<br>
> +                                     "s:host", host->name,<br>
> +                                     "s:port", port,<br>
> +                                     NULL) < 0)<br>
> +            goto cleanup;<br>
> +<br>
> +<br>
> +        break;<br>
<br>
</div></div>Missing line break here. Please follow the coding style in the rest of<br>
the function.<br>
<span><br>
>      case VIR_STORAGE_NET_HOST_TRANS_UNI<wbr>X:<br>
>          if (virJSONValueObjectCreate(&ser<wbr>ver,<br>
>                                       "s:type", "unix",<br>
<br>
</span>[...]<br>
<span><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..b3f4f9bfb<br>
> --- /dev/null<br>
> +++ b/tests/qemuxml2argvdata/disk-<wbr>drive-network-iser.xml<br>
<br>
</span>You are missing the output file and change to qemuxml2argvtest.c, thus<br>
this is testing nothing. I also think that it will not work for most<br>
cases unless you tweak qemuDiskSourceNeedsProps.<br>
<br>
Also this fails to compile when the gluster driver is enabled:<br>
<br>
storage/storage_backend_gluste<wbr>r.c: In function 'virStorageFileBackendGlusterI<wbr>nitServer':<br>
storage/storage_backend_gluste<wbr>r.c:600:5: error: enumeration value 'VIR_STORAGE_NET_HOST_TRANS_IS<wbr>ER' not handled in switch [-Werror=switch]<br>
     switch ((virStorageNetHostTransport) host->transport) {<br>
     ^~~~~~<br>
<br>
Do not send any other version until you fix the tests. You also need to<br>
run make syntax-check and fix any problems it points out.<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>