[libvirt] [PATCH 9/9] qemu: add support for domain disk initiator IQN

Pavel Hrdina phrdina at redhat.com
Tue Aug 7 13:55:28 UTC 2018


Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
---
 src/qemu/qemu_block.c                                 |  2 ++
 src/qemu/qemu_domain.c                                |  9 +++++++++
 tests/qemuxml2argvdata/disk-network-iscsi-modern.args |  8 +++++++-
 tests/qemuxml2argvdata/disk-network-iscsi-modern.xml  | 10 ++++++++++
 4 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/qemu/qemu_block.c b/src/qemu/qemu_block.c
index 66e6301210..be120b30f0 100644
--- a/src/qemu/qemu_block.c
+++ b/src/qemu/qemu_block.c
@@ -819,6 +819,7 @@ qemuBlockStorageSourceGetISCSIProps(virStorageSourcePtr src)
      *   lun:1,
      *   user:"username",
      *   password-secret:"secret-alias",
+     *   initiator-name:"iqn.2017-04.com.example:client"
      * }
      */
 
@@ -860,6 +861,7 @@ qemuBlockStorageSourceGetISCSIProps(virStorageSourcePtr src)
                                           "s:transport", "tcp",
                                           "S:user", username,
                                           "S:password-secret", objalias,
+                                          "S:initiator-name", src->initiator.iqn,
                                           NULL));
         goto cleanup;
 
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 6b50e0c484..e8960105c3 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -4682,6 +4682,15 @@ qemuDomainValidateStorageSource(virStorageSourcePtr src,
         return -1;
     }
 
+    /* Use QEMU_CAPS_ISCSI_PASSWORD_SECRET as witness that iscsi 'initiator-name'
+     * option is available, it was introduced at the same time. */
+    if (src->initiator.iqn &&
+        !virQEMUCapsGet(qemuCaps, QEMU_CAPS_ISCSI_PASSWORD_SECRET)) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+                       _("iSCSI initiator IQN not supported with this QEMU binary"));
+        return -1;
+    }
+
     return 0;
 }
 
diff --git a/tests/qemuxml2argvdata/disk-network-iscsi-modern.args b/tests/qemuxml2argvdata/disk-network-iscsi-modern.args
index 0a3e0bdb8b..a06b63a940 100644
--- a/tests/qemuxml2argvdata/disk-network-iscsi-modern.args
+++ b/tests/qemuxml2argvdata/disk-network-iscsi-modern.args
@@ -49,4 +49,10 @@ id=virtio-disk3 \
 file.target=iqn.1992-01.com.example,file.lun=0,file.transport=tcp,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
+drive=drive-scsi0-0-0-0,id=scsi0-0-0-0 \
+-drive file.driver=iscsi,file.portal=example.org:3260,\
+file.target=iqn.1992-01.com.example:server,file.lun=0,file.transport=tcp,\
+file.initiator-name=iqn.1992-01.com.example:client,format=raw,if=none,\
+id=drive-scsi0-0-0-1 \
+-device scsi-block,bus=scsi0.0,channel=0,scsi-id=0,lun=1,\
+drive=drive-scsi0-0-0-1,id=scsi0-0-0-1
diff --git a/tests/qemuxml2argvdata/disk-network-iscsi-modern.xml b/tests/qemuxml2argvdata/disk-network-iscsi-modern.xml
index fa2a889b54..d1be9c4e7d 100644
--- a/tests/qemuxml2argvdata/disk-network-iscsi-modern.xml
+++ b/tests/qemuxml2argvdata/disk-network-iscsi-modern.xml
@@ -55,6 +55,16 @@
       </source>
       <target dev='sda' bus='scsi'/>
     </disk>
+    <disk type='network' device='lun'>
+      <driver name='qemu' type='raw'/>
+      <source protocol='iscsi' name='iqn.1992-01.com.example:server/0'>
+        <host name='example.org' port='3260'/>
+        <initiator>
+          <iqn name='iqn.1992-01.com.example:client'/>
+        </initiator>
+      </source>
+      <target dev='sdb' bus='scsi'/>
+    </disk>
     <controller type='usb' index='0'/>
     <controller type='pci' index='0' model='pci-root'/>
     <controller type='scsi' index='0' model='virtio-scsi'/>
-- 
2.17.1




More information about the libvir-list mailing list