]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: add support for domain disk initiator IQN
authorPavel Hrdina <phrdina@redhat.com>
Tue, 7 Aug 2018 12:57:43 +0000 (14:57 +0200)
committerPavel Hrdina <phrdina@redhat.com>
Wed, 8 Aug 2018 15:33:12 +0000 (17:33 +0200)
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
src/qemu/qemu_block.c
src/qemu/qemu_domain.c
tests/qemuxml2argvdata/disk-network-iscsi-modern.args
tests/qemuxml2argvdata/disk-network-iscsi-modern.xml

index 66e63012109a902f82a6b16d7ada3ae5b9f9eeb7..be120b30f0b7e02b0c4871dd62a0852140e40c4e 100644 (file)
@@ -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;
 
index 6b50e0c484820a1afb39e2be2002280f47aa968e..e8960105c31cd897534106cb0e9610ee63f89a3e 100644 (file)
@@ -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;
 }
 
index 0a3e0bdb8b522d91bcc1591ef0f60a8ce55bf07f..a06b63a94059c0ce6b7652e4d021b8b194fcfcd9 100644 (file)
@@ -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
index fa2a889b54f1be2156177ecaa1af52d5f06e0e3d..d1be9c4e7dfb65419ba0341a14fbc8caba5d8219 100644 (file)
       </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'/>