We already allow controlling the initiator IQN for iSCSI based disks.
Add the same for host devices.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
docs/formatdomain-devices-hostdev.rst.in | 7 +++++++
docs/schemas/domaincommon.rng | 3 +++
src/conf/domain_conf.c | 5 +++++
.../hostdev-scsi-virtio-scsi.x86_64-4.1.0.args | 3 ++-
.../hostdev-scsi-virtio-scsi.x86_64-latest.args | 1 +
tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.xml | 3 +++
tests/qemuxml2xmloutdata/hostdev-scsi-virtio-scsi.xml | 3 +++
7 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/docs/formatdomain-devices-hostdev.rst.in
b/docs/formatdomain-devices-hostdev.rst.in
index 859c4b4ec5..1221627818 100644
--- a/docs/formatdomain-devices-hostdev.rst.in
+++ b/docs/formatdomain-devices-hostdev.rst.in
@@ -68,6 +68,9 @@ or:
<hostdev mode='subsystem' type='scsi'>
<source protocol='iscsi'
name='iqn.2014-08.com.example:iscsi-nopool/1'>
<host name='example.com' port='3260'/>
+ <initiator>
+ <iqn name='iqn.2020-07.com.example:test'/>
+ </initiator>
<auth username='myuser'>
<secret type='iscsi' usage='libvirtiscsi'/>
</auth>
@@ -210,6 +213,10 @@ or:
same ``name`` attribute and optionally using the ``auth`` element to
provide the authentication credentials to the iSCSI server.
+ :since:`Since 6.6.0`, the optional ``initiator`` sub-element controls the
+ IQN of the initiator ran by the hypervisor via it's ``<iqn
name='iqn...'``
+ subelement.
+
``scsi_host``
:since:`Since 2.5.0` , multiple LUNs behind a single SCSI HBA are
described by a ``protocol`` attribute set to "vhost" and a ``wwpn``
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index a810f569c6..815793138e 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -5045,6 +5045,9 @@
<optional>
<ref name='diskAuth'/>
</optional>
+ <optional>
+ <ref name="initiatorinfo"/>
+ </optional>
</interleave>
</group>
</choice>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 5988a13986..5c23a52031 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8349,6 +8349,8 @@ virDomainHostdevSubsysSCSIiSCSIDefParseXML(xmlNodePtr sourcenode,
iscsisrc->src->auth = g_steal_pointer(&authdef);
}
+ virStorageSourceInitiatorParseXML(ctxt, &iscsisrc->src->initiator);
+
if ((flags & VIR_DOMAIN_DEF_PARSE_STATUS) &&
xmlopt && xmlopt->privateData.storageParse) {
if ((ctxt->node = virXPathNode("./privateData", ctxt)) &&
@@ -26128,6 +26130,9 @@ virDomainHostdevDefFormatSubsysSCSI(virBufferPtr buf,
if (iscsisrc->src->auth)
virStorageAuthDefFormat(&sourceChildBuf, iscsisrc->src->auth);
+
+ virStorageSourceInitiatorFormatXML(&iscsisrc->src->initiator,
+ &sourceChildBuf);
} else {
virBufferAsprintf(&sourceChildBuf, "<adapter
name='%s'/>\n",
scsihostsrc->adapter);
diff --git a/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.x86_64-4.1.0.args
b/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.x86_64-4.1.0.args
index de4047000e..f2591d6956 100644
--- a/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.x86_64-4.1.0.args
+++ b/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.x86_64-4.1.0.args
@@ -60,7 +60,8 @@ data=9eao5F8qtkGt+seB1HYivWIxbtwUu6MQtg1zpj/oDtUsPr1q8wBYM91uEHCn6j/1,\
keyid=masterKey0,iv=AAECAwQFBgcICQoLDA0ODw==,format=base64 \
-drive file.driver=iscsi,file.portal=example.org:3260,\
file.target=iqn.1992-01.com.example:storage,file.lun=2,file.transport=tcp,\
-file.user=myname,file.password-secret=hostdev5-secret0,if=none,format=raw,\
+file.user=myname,file.password-secret=hostdev5-secret0,\
+file.initiator-name=iqn.2020-07.com.example:test,if=none,format=raw,\
id=drive-hostdev5 \
-device scsi-generic,bus=scsi0.0,channel=0,scsi-id=3,lun=5,\
drive=drive-hostdev5,id=hostdev5 \
diff --git a/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.x86_64-latest.args
b/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.x86_64-latest.args
index 72980d58b8..f86cbd7314 100644
--- a/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.x86_64-latest.args
+++ b/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.x86_64-latest.args
@@ -67,6 +67,7 @@ keyid=masterKey0,iv=AAECAwQFBgcICQoLDA0ODw==,format=base64 \
-blockdev
'{"driver":"iscsi","portal":"example.org:3260",\
"target":"iqn.1992-01.com.example:storage","lun":2,"transport":"tcp",\
"user":"myname","password-secret":"hostdev5-secret0",\
+"initiator-name":"iqn.2020-07.com.example:test",\
"node-name":"libvirt-hostdev5-backend","read-only":false}'
\
-device scsi-generic,bus=scsi0.0,channel=0,scsi-id=3,lun=5,\
drive=libvirt-hostdev5-backend,id=hostdev5 \
diff --git a/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.xml
b/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.xml
index 775b678b36..f1caf80644 100644
--- a/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.xml
+++ b/tests/qemuxml2argvdata/hostdev-scsi-virtio-scsi.xml
@@ -67,6 +67,9 @@
<auth username='myname'>
<secret type='iscsi' usage='mycluster_myname'/>
</auth>
+ <initiator>
+ <iqn name='iqn.2020-07.com.example:test'/>
+ </initiator>
</source>
<address type='drive' controller='0' bus='0'
target='3' unit='5'/>
</hostdev>
diff --git a/tests/qemuxml2xmloutdata/hostdev-scsi-virtio-scsi.xml
b/tests/qemuxml2xmloutdata/hostdev-scsi-virtio-scsi.xml
index 9c823809ab..6c7e22d0c3 100644
--- a/tests/qemuxml2xmloutdata/hostdev-scsi-virtio-scsi.xml
+++ b/tests/qemuxml2xmloutdata/hostdev-scsi-virtio-scsi.xml
@@ -74,6 +74,9 @@
<auth username='myname'>
<secret type='iscsi' usage='mycluster_myname'/>
</auth>
+ <initiator>
+ <iqn name='iqn.2020-07.com.example:test'/>
+ </initiator>
</source>
<address type='drive' controller='0' bus='0'
target='3' unit='5'/>
</hostdev>
--
2.26.2