src/conf/domain_conf.c | 13 ++++++++ src/qemu/qemu_block.c | 17 +++++++++- src/util/virstoragefile.c | 3 +- src/util/virstoragefile.h | 1 + tests/qemuxml2argvdata/disk-drive-network-iser.xml | 37 ++++++++++++++++++++++ 5 files changed, 69 insertions(+), 2 deletions(-) create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser.xml
From: zhangshengyu <zhangshengyu@fusionstack.cn>
---
src/conf/domain_conf.c | 13 ++++++++
src/qemu/qemu_block.c | 17 +++++++++-
src/util/virstoragefile.c | 3 +-
src/util/virstoragefile.h | 1 +
tests/qemuxml2argvdata/disk-drive-network-iser.xml | 37 ++++++++++++++++++++++
5 files changed, 69 insertions(+), 2 deletions(-)
create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser.xml
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 66e21c4bd..bf20cfd0c 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -7201,6 +7201,9 @@ virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr sourcenode,
iscsisrc->src->type = VIR_STORAGE_TYPE_NETWORK;
iscsisrc->src->protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI;
+virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("virDomainHostdevSubsysSCSIiSCSIDefParseXML"));
+
if (!(iscsisrc->src->path = virXMLPropString(sourcenode, "name"))) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("missing iSCSI hostdev source path name"));
@@ -8416,6 +8419,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
unsigned int flags)
{
char *protocol = NULL;
+ char *transport = NULL;
char *haveTLS = NULL;
char *tlsCfg = NULL;
int tlsCfgVal;
@@ -8427,6 +8431,10 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
goto cleanup;
}
+ if (!(transport = virXMLPropString(node, "transport"))) {
+ VIR_WARN("missing network source transport type");
+ }
+
if ((src->protocol = virStorageNetProtocolTypeFromString(protocol)) <= 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("unknown protocol type '%s'"), protocol);
@@ -8495,6 +8503,9 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
if (virDomainStorageNetworkParseHosts(node, &src->hosts, &src->nhosts) < 0)
goto cleanup;
+ if(src->hosts)
+ src->hosts->transport = virStorageNetHostTransportTypeFromString(transport);
+
virStorageSourceNetworkAssignDefaultPorts(src);
ret = 0;
@@ -22326,6 +22337,8 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
VIR_FREE(path);
+ virBufferEscapeString(attrBuf, " transport='%s'", "iser");
+
if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&
!(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE &&
src->tlsFromConfig))
diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 585f0255e..dcd7c6a5e 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -506,6 +506,20 @@ qemuBlockStorageSourceBuildJSONSocketAddress(virStorageNetHostDefPtr host,
goto cleanup;
break;
+ case VIR_STORAGE_NET_HOST_TRANS_ISER:
+ transport = "iser";
+ if (virAsprintf(&port, "%u", host->port) < 0)
+ goto cleanup;
+
+ if (virJSONValueObjectCreate(&server,
+ "s:type", transport,
+ "s:host", host->name,
+ "s:port", port,
+ NULL) < 0)
+ goto cleanup;
+
+
+ break;
case VIR_STORAGE_NET_HOST_TRANS_UNIX:
if (virJSONValueObjectCreate(&server,
"s:type", "unix",
@@ -831,7 +845,8 @@ qemuBlockStorageSourceGetISCSIProps(virStorageSourcePtr src)
"s:portal", portal,
"s:target", target,
"u:lun", lun,
- "s:transport", "tcp",
+ "s:transport",
+ virStorageNetHostTransportTypeToString(src->hosts->transport),
"S:user", username,
"S:password-secret", objalias,
NULL));
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index 6594715e5..02d62a68e 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -92,7 +92,8 @@ VIR_ENUM_IMPL(virStorageNetProtocol, VIR_STORAGE_NET_PROTOCOL_LAST,
VIR_ENUM_IMPL(virStorageNetHostTransport, VIR_STORAGE_NET_HOST_TRANS_LAST,
"tcp",
"unix",
- "rdma")
+ "rdma",
+ "iser")
VIR_ENUM_IMPL(virStorageSourcePoolMode,
VIR_STORAGE_SOURCE_POOL_MODE_LAST,
diff --git a/src/util/virstoragefile.h b/src/util/virstoragefile.h
index 24382a0a6..4eb650186 100644
--- a/src/util/virstoragefile.h
+++ b/src/util/virstoragefile.h
@@ -147,6 +147,7 @@ typedef enum {
VIR_STORAGE_NET_HOST_TRANS_TCP,
VIR_STORAGE_NET_HOST_TRANS_UNIX,
VIR_STORAGE_NET_HOST_TRANS_RDMA,
+ VIR_STORAGE_NET_HOST_TRANS_ISER,
VIR_STORAGE_NET_HOST_TRANS_LAST
} virStorageNetHostTransport;
diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser.xml b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
new file mode 100644
index 000000000..b3f4f9bfb
--- /dev/null
+++ b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
@@ -0,0 +1,37 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>e301d9ab-f5ad-47bf-988c-9645577a1af4</uuid>
+ <memory unit='KiB'>219136</memory>
+ <currentMemory unit='KiB'>219136</currentMemory>
+ <vcpu placement='static'>1</vcpu>
+ <os>
+ <type arch='i686' machine='pc'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>destroy</on_crash>
+ <devices>
+ <emulator>/usr/bin/qemu-system-i686</emulator>
+ <disk type='network' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source protocol='iscsi' name='iqn.1992-01.com.example' transport='iser'>
+ <host name='example.org' port='6000'/>
+ </source>
+ <target dev='vda' bus='virtio'/>
+ </disk>
+ <disk type='network' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source protocol='iscsi' name='iqn.1992-01.com.example/1' transport='iser'>
+ <host name='example.org' port='6000'/>
+ </source>
+ <target dev='vdb' bus='virtio'/>
+ </disk>
+ <controller type='usb' index='0'/>
+ <controller type='pci' index='0' model='pci-root'/>
+ <input type='mouse' bus='ps2'/>
+ <input type='keyboard' bus='ps2'/>
+ <memballoon model='none'/>
+ </devices>
+</domain>
--
2.13.6 (Apple Git-96)
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
On Thu, Dec 14, 2017 at 18:14:36 +0800, lichstor@gmail.com wrote:
> From: zhangshengyu <zhangshengyu@fusionstack.cn>
As pointed out last time, please follow the contributor guidelines. You
did not run make syntax-check. Also the contributor guidelines state
that you should write a commit message. I asked last time for that too.
Please note that I will NOT review any other version until you follow
the contributor guidelines at:
https://libvirt.org/hacking.html
See below for reasons.
>
> ---
> src/conf/domain_conf.c | 13 ++++++++
> src/qemu/qemu_block.c | 17 +++++++++-
> src/util/virstoragefile.c | 3 +-
> src/util/virstoragefile.h | 1 +
> tests/qemuxml2argvdata/disk-drive-network-iser.xml | 37 ++++++++++++++++++++++
> 5 files changed, 69 insertions(+), 2 deletions(-)
> create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser.xml
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 66e21c4bd..bf20cfd0c 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -7201,6 +7201,9 @@ virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr sourcenode,
> iscsisrc->src->type = VIR_STORAGE_TYPE_NETWORK;
> iscsisrc->src->protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI;
>
> +virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> + _("virDomainHostdevSubsysSCSIiSCSIDefParseXML"));
> +
Is this leftover debugging? it's certainly aligned wrongly and does not
make sense at all.
> if (!(iscsisrc->src->path = virXMLPropString(sourcenode, "name"))) {
> virReportError(VIR_ERR_XML_ERROR, "%s",
> _("missing iSCSI hostdev source path name"));
> @@ -8416,6 +8419,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
> unsigned int flags)
> {
> char *protocol = NULL;
> + char *transport = NULL;
> char *haveTLS = NULL;
> char *tlsCfg = NULL;
> int tlsCfgVal;
> @@ -8427,6 +8431,10 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
> goto cleanup;
> }
>
> + if (!(transport = virXMLPropString(node, "transport"))) {
> + VIR_WARN("missing network source transport type");
It will be missing for all other protocols. You can't just do that.
> + }
> +
> if ((src->protocol = virStorageNetProtocolTypeFromString(protocol)) <= 0) {
> virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> _("unknown protocol type '%s'"), protocol);
> @@ -8495,6 +8503,9 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
> if (virDomainStorageNetworkParseHosts(node, &src->hosts, &src->nhosts) < 0)
> goto cleanup;
>
> + if(src->hosts)
> + src->hosts->transport = virStorageNetHostTransportTypeFromString(transport);
This is plain wrong. virDomainStorageNetworkParseHosts should parse
this.
> +
> virStorageSourceNetworkAssignDefaultPorts(src);
>
> ret = 0;
> @@ -22326,6 +22337,8 @@ virDomainDiskSourceFormatNetwork(virBufferPtr attrBuf,
>
> VIR_FREE(path);
>
> + virBufferEscapeString(attrBuf, " transport='%s'", "iser");
What?!?! How is this even supposed to work? Did you even bother running
make check?!?! This breaks 9 test suites.
> +
> if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&
> !(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE &&
> src->tlsFromConfig))
> diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
> index 585f0255e..dcd7c6a5e 100644
> --- a/src/qemu/qemu_block.c
> +++ b/src/qemu/qemu_block.c
> @@ -506,6 +506,20 @@ qemuBlockStorageSourceBuildJSONSocketAddress(virStorageNetHostDefPtr host,
> goto cleanup;
> break;
>
> + case VIR_STORAGE_NET_HOST_TRANS_ISER:
> + transport = "iser";
> + if (virAsprintf(&port, "%u", host->port) < 0)
> + goto cleanup;
> +
> + if (virJSONValueObjectCreate(&server,
> + "s:type", transport,
> + "s:host", host->name,
> + "s:port", port,
> + NULL) < 0)
> + goto cleanup;
> +
> +
> + break;
Missing line break here. Please follow the coding style in the rest of
the function.
> case VIR_STORAGE_NET_HOST_TRANS_UNIX:
> if (virJSONValueObjectCreate(&server,
> "s:type", "unix",
[...]
> diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser.xml b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
> new file mode 100644
> index 000000000..b3f4f9bfb
> --- /dev/null
> +++ b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
You are missing the output file and change to qemuxml2argvtest.c, thus
this is testing nothing. I also think that it will not work for most
cases unless you tweak qemuDiskSourceNeedsProps.
Also this fails to compile when the gluster driver is enabled:
storage/storage_backend_gluster.c: In function 'virStorageFileBackendGlusterInitServer':
storage/storage_backend_gluster.c:600:5: error: enumeration value 'VIR_STORAGE_NET_HOST_TRANS_ISER' not handled in switch [-Werror=switch]
switch ((virStorageNetHostTransport) host->transport) {
^~~~~~
Do not send any other version until you fix the tests. You also need to
run make syntax-check and fix any problems it points out.
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Thank you for your patience, I regret for my first time submit here that
brings so may mistakes.
I have done almost changes that you have mentioned. Now I have a question:
I created drive-file-network-args.xml in test, and there is: -drive
file=iser://example.org:6000/iqn.1992-01.com.example/1,format=raw
but the system create -drive file=iscsi+iser://
example.org:6000/iqn.1992-01.com.example/1,format=raw
I doubt why it create iscsi+iser?
On Thu, Dec 14, 2017 at 7:35 PM, Peter Krempa <pkrempa@redhat.com> wrote:
> On Thu, Dec 14, 2017 at 18:14:36 +0800, lichstor@gmail.com wrote:
> > From: zhangshengyu <zhangshengyu@fusionstack.cn>
>
> As pointed out last time, please follow the contributor guidelines. You
> did not run make syntax-check. Also the contributor guidelines state
> that you should write a commit message. I asked last time for that too.
>
> Please note that I will NOT review any other version until you follow
> the contributor guidelines at:
>
> https://libvirt.org/hacking.html
>
> See below for reasons.
>
> >
> > ---
> > src/conf/domain_conf.c | 13 ++++++++
> > src/qemu/qemu_block.c | 17 +++++++++-
> > src/util/virstoragefile.c | 3 +-
> > src/util/virstoragefile.h | 1 +
> > tests/qemuxml2argvdata/disk-drive-network-iser.xml | 37
> ++++++++++++++++++++++
> > 5 files changed, 69 insertions(+), 2 deletions(-)
> > create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser.xml
> >
> > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> > index 66e21c4bd..bf20cfd0c 100644
> > --- a/src/conf/domain_conf.c
> > +++ b/src/conf/domain_conf.c
> > @@ -7201,6 +7201,9 @@ virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr
> sourcenode,
> > iscsisrc->src->type = VIR_STORAGE_TYPE_NETWORK;
> > iscsisrc->src->protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI;
> >
> > +virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> > + _("virDomainHostdevSubsysSCSIiSCS
> IDefParseXML"));
> > +
>
> Is this leftover debugging? it's certainly aligned wrongly and does not
> make sense at all.
>
> > if (!(iscsisrc->src->path = virXMLPropString(sourcenode, "name"))) {
> > virReportError(VIR_ERR_XML_ERROR, "%s",
> > _("missing iSCSI hostdev source path name"));
> > @@ -8416,6 +8419,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
> > unsigned int flags)
> > {
> > char *protocol = NULL;
> > + char *transport = NULL;
> > char *haveTLS = NULL;
> > char *tlsCfg = NULL;
> > int tlsCfgVal;
> > @@ -8427,6 +8431,10 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
> > goto cleanup;
> > }
> >
> > + if (!(transport = virXMLPropString(node, "transport"))) {
> > + VIR_WARN("missing network source transport type");
>
> It will be missing for all other protocols. You can't just do that.
>
> > + }
> > +
> > if ((src->protocol = virStorageNetProtocolTypeFromString(protocol))
> <= 0) {
> > virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> > _("unknown protocol type '%s'"), protocol);
> > @@ -8495,6 +8503,9 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
> > if (virDomainStorageNetworkParseHosts(node, &src->hosts,
> &src->nhosts) < 0)
> > goto cleanup;
> >
> > + if(src->hosts)
> > + src->hosts->transport = virStorageNetHostTransportType
> FromString(transport);
>
> This is plain wrong. virDomainStorageNetworkParseHosts should parse
> this.
>
> > +
> > virStorageSourceNetworkAssignDefaultPorts(src);
> >
> > ret = 0;
> > @@ -22326,6 +22337,8 @@ virDomainDiskSourceFormatNetwork(virBufferPtr
> attrBuf,
> >
> > VIR_FREE(path);
> >
> > + virBufferEscapeString(attrBuf, " transport='%s'", "iser");
>
> What?!?! How is this even supposed to work? Did you even bother running
> make check?!?! This breaks 9 test suites.
>
> > +
> > if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&
> > !(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE &&
> > src->tlsFromConfig))
> > diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
> > index 585f0255e..dcd7c6a5e 100644
> > --- a/src/qemu/qemu_block.c
> > +++ b/src/qemu/qemu_block.c
> > @@ -506,6 +506,20 @@ qemuBlockStorageSourceBuildJSONSocketAddress(virStorageNetHostDefPtr
> host,
> > goto cleanup;
> > break;
> >
> > + case VIR_STORAGE_NET_HOST_TRANS_ISER:
> > + transport = "iser";
> > + if (virAsprintf(&port, "%u", host->port) < 0)
> > + goto cleanup;
> > +
> > + if (virJSONValueObjectCreate(&server,
> > + "s:type", transport,
> > + "s:host", host->name,
> > + "s:port", port,
> > + NULL) < 0)
> > + goto cleanup;
> > +
> > +
> > + break;
>
> Missing line break here. Please follow the coding style in the rest of
> the function.
>
> > case VIR_STORAGE_NET_HOST_TRANS_UNIX:
> > if (virJSONValueObjectCreate(&server,
> > "s:type", "unix",
>
> [...]
>
> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser.xml
> b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
> > new file mode 100644
> > index 000000000..b3f4f9bfb
> > --- /dev/null
> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
>
> You are missing the output file and change to qemuxml2argvtest.c, thus
> this is testing nothing. I also think that it will not work for most
> cases unless you tweak qemuDiskSourceNeedsProps.
>
> Also this fails to compile when the gluster driver is enabled:
>
> storage/storage_backend_gluster.c: In function '
> virStorageFileBackendGlusterInitServer':
> storage/storage_backend_gluster.c:600:5: error: enumeration value
> 'VIR_STORAGE_NET_HOST_TRANS_ISER' not handled in switch [-Werror=switch]
> switch ((virStorageNetHostTransport) host->transport) {
> ^~~~~~
>
> Do not send any other version until you fix the tests. You also need to
> run make syntax-check and fix any problems it points out.
>
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
I made clear why it create iscsi+iser, not only that the system have many
place expect iscsi+iser type of strings, like qemuParseDriveURIString.
but actually for qemu command line, iser://example.org... can work while
iscsi+iser will not, how should I do?
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
On Fri, Dec 15, 2017 at 11:47 AM, Charles Kelimod <lichstor@gmail.com>
wrote:
> Thank you for your patience, I regret for my first time submit here that
> brings so may mistakes.
>
> I have done almost changes that you have mentioned. Now I have a question:
> I created drive-file-network-args.xml in test, and there is: -drive
> file=iser://example.org:6000/iqn.1992-01.com.example/1,format=raw
> but the system create -drive file=iscsi+iser://example.org:
> 6000/iqn.1992-01.com.example/1,format=raw
> I doubt why it create iscsi+iser?
>
> On Thu, Dec 14, 2017 at 7:35 PM, Peter Krempa <pkrempa@redhat.com> wrote:
>
>> On Thu, Dec 14, 2017 at 18:14:36 +0800, lichstor@gmail.com wrote:
>> > From: zhangshengyu <zhangshengyu@fusionstack.cn>
>>
>> As pointed out last time, please follow the contributor guidelines. You
>> did not run make syntax-check. Also the contributor guidelines state
>> that you should write a commit message. I asked last time for that too.
>>
>> Please note that I will NOT review any other version until you follow
>> the contributor guidelines at:
>>
>> https://libvirt.org/hacking.html
>>
>> See below for reasons.
>>
>> >
>> > ---
>> > src/conf/domain_conf.c | 13 ++++++++
>> > src/qemu/qemu_block.c | 17 +++++++++-
>> > src/util/virstoragefile.c | 3 +-
>> > src/util/virstoragefile.h | 1 +
>> > tests/qemuxml2argvdata/disk-drive-network-iser.xml | 37
>> ++++++++++++++++++++++
>> > 5 files changed, 69 insertions(+), 2 deletions(-)
>> > create mode 100644 tests/qemuxml2argvdata/disk-drive-network-iser.xml
>> >
>> > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
>> > index 66e21c4bd..bf20cfd0c 100644
>> > --- a/src/conf/domain_conf.c
>> > +++ b/src/conf/domain_conf.c
>> > @@ -7201,6 +7201,9 @@ virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr
>> sourcenode,
>> > iscsisrc->src->type = VIR_STORAGE_TYPE_NETWORK;
>> > iscsisrc->src->protocol = VIR_STORAGE_NET_PROTOCOL_ISCSI;
>> >
>> > +virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>> > + _("virDomainHostdevSubsysSCSI
>> iSCSIDefParseXML"));
>> > +
>>
>> Is this leftover debugging? it's certainly aligned wrongly and does not
>> make sense at all.
>>
>> > if (!(iscsisrc->src->path = virXMLPropString(sourcenode, "name")))
>> {
>> > virReportError(VIR_ERR_XML_ERROR, "%s",
>> > _("missing iSCSI hostdev source path name"));
>> > @@ -8416,6 +8419,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
>> > unsigned int flags)
>> > {
>> > char *protocol = NULL;
>> > + char *transport = NULL;
>> > char *haveTLS = NULL;
>> > char *tlsCfg = NULL;
>> > int tlsCfgVal;
>> > @@ -8427,6 +8431,10 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
>> > goto cleanup;
>> > }
>> >
>> > + if (!(transport = virXMLPropString(node, "transport"))) {
>> > + VIR_WARN("missing network source transport type");
>>
>> It will be missing for all other protocols. You can't just do that.
>>
>> > + }
>> > +
>> > if ((src->protocol = virStorageNetProtocolTypeFromString(protocol))
>> <= 0) {
>> > virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
>> > _("unknown protocol type '%s'"), protocol);
>> > @@ -8495,6 +8503,9 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node,
>> > if (virDomainStorageNetworkParseHosts(node, &src->hosts,
>> &src->nhosts) < 0)
>> > goto cleanup;
>> >
>> > + if(src->hosts)
>> > + src->hosts->transport = virStorageNetHostTransportType
>> FromString(transport);
>>
>> This is plain wrong. virDomainStorageNetworkParseHosts should parse
>> this.
>>
>> > +
>> > virStorageSourceNetworkAssignDefaultPorts(src);
>> >
>> > ret = 0;
>> > @@ -22326,6 +22337,8 @@ virDomainDiskSourceFormatNetwork(virBufferPtr
>> attrBuf,
>> >
>> > VIR_FREE(path);
>> >
>> > + virBufferEscapeString(attrBuf, " transport='%s'", "iser");
>>
>> What?!?! How is this even supposed to work? Did you even bother running
>> make check?!?! This breaks 9 test suites.
>>
>> > +
>> > if (src->haveTLS != VIR_TRISTATE_BOOL_ABSENT &&
>> > !(flags & VIR_DOMAIN_DEF_FORMAT_MIGRATABLE &&
>> > src->tlsFromConfig))
>> > diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
>> > index 585f0255e..dcd7c6a5e 100644
>> > --- a/src/qemu/qemu_block.c
>> > +++ b/src/qemu/qemu_block.c
>> > @@ -506,6 +506,20 @@ qemuBlockStorageSourceBuildJSO
>> NSocketAddress(virStorageNetHostDefPtr host,
>> > goto cleanup;
>> > break;
>> >
>> > + case VIR_STORAGE_NET_HOST_TRANS_ISER:
>> > + transport = "iser";
>> > + if (virAsprintf(&port, "%u", host->port) < 0)
>> > + goto cleanup;
>> > +
>> > + if (virJSONValueObjectCreate(&server,
>> > + "s:type", transport,
>> > + "s:host", host->name,
>> > + "s:port", port,
>> > + NULL) < 0)
>> > + goto cleanup;
>> > +
>> > +
>> > + break;
>>
>> Missing line break here. Please follow the coding style in the rest of
>> the function.
>>
>> > case VIR_STORAGE_NET_HOST_TRANS_UNIX:
>> > if (virJSONValueObjectCreate(&server,
>> > "s:type", "unix",
>>
>> [...]
>>
>> > diff --git a/tests/qemuxml2argvdata/disk-drive-network-iser.xml
>> b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
>> > new file mode 100644
>> > index 000000000..b3f4f9bfb
>> > --- /dev/null
>> > +++ b/tests/qemuxml2argvdata/disk-drive-network-iser.xml
>>
>> You are missing the output file and change to qemuxml2argvtest.c, thus
>> this is testing nothing. I also think that it will not work for most
>> cases unless you tweak qemuDiskSourceNeedsProps.
>>
>> Also this fails to compile when the gluster driver is enabled:
>>
>> storage/storage_backend_gluster.c: In function
>> 'virStorageFileBackendGlusterInitServer':
>> storage/storage_backend_gluster.c:600:5: error: enumeration value
>> 'VIR_STORAGE_NET_HOST_TRANS_ISER' not handled in switch [-Werror=switch]
>> switch ((virStorageNetHostTransport) host->transport) {
>> ^~~~~~
>>
>> Do not send any other version until you fix the tests. You also need to
>> run make syntax-check and fix any problems it points out.
>>
>
>
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
© 2016 - 2025 Red Hat, Inc.