<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>