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