[PATCH v2] conf: Add support for initiator IQN setting for iSCSI hostdevs

Peter Krempa pkrempa at redhat.com
Tue Aug 4 07:51:48 UTC 2020


We already allow controlling the initiator IQN for iSCSI based disks.
Add the same for host devices.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---

Rebased on top of the latest patch to convert formatdomain to rst and
fixed 'since' tag.

 docs/formatdomain.rst                                        | 4 ++++
 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, 21 insertions(+), 1 deletion(-)

diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst
index a39e0c4adf..4372b79061 100644
--- a/docs/formatdomain.rst
+++ b/docs/formatdomain.rst
@@ -3909,6 +3909,10 @@ or:
       same ``name`` attribute and optionally using the ``auth`` element to
       provide the authentication credentials to the iSCSI server.

+      :since:`Since 6.7.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 c196a97511..0d0dcbc5ce 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -5058,6 +5058,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 69e0439e7e..a6d23a2238 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -8354,6 +8354,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)) &&
@@ -26164,6 +26166,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




More information about the libvir-list mailing list