]> xenbits.xensource.com Git - libvirt.git/commitdiff
scsi: Need to translate disk source pool in config attach path
authorJohn Ferlan <jferlan@redhat.com>
Thu, 11 Jun 2015 21:07:38 +0000 (17:07 -0400)
committerJohn Ferlan <jferlan@redhat.com>
Fri, 12 Jun 2015 16:20:36 +0000 (12:20 -0400)
https://bugzilla.redhat.com/show_bug.cgi?id=1228007

When attaching a scsi volume lun via the attach-device --config or
--persistent options, there was no translation of the source pool
like there was for the live path, thus the attempt to modify the config
would fail since not enough was known about the disk.

docs/formatdomain.html.in
docs/schemas/domaincommon.rng
src/qemu/qemu_driver.c

index 0478cb2c04e18d97dc4dfe08fdc8f04e276ba175..b8af1d01331c3f68730abd607ea61aa7f97221e1 100644 (file)
             defaulting to "disk".
             <p>
             Using "lun" (<span class="since">since 0.9.10</span>) is only
-            valid when type is "block" or "network" using the iSCSI protocol,
-            and behaves identically to "disk",
+            valid when the <code>type</code> is "block" or "network" for
+            <code>protocol='iscsi'</code> or when the <code>type</code>
+            is "volume" when using an iSCSI source <code>pool</code>.
+            Configured in this manner, the LUN behaves identically to "disk",
             except that generic SCSI commands from the guest are accepted
             and passed through to the physical device. Also note that
             device='lun' will only be recognized for actual raw devices,
               Using "host" as the <code>mode</code> value indicates to use the
               LUN's path as it shows up on host (e.g.
               'file=/dev/disk/by-path/ip-example.com:3260-iscsi-iqn.2013-07.com.example:iscsi-pool-lun-1').
+
+              Using a LUN from an iSCSI source pool provides the same
+              features as a <code>disk</code> configured using
+              <code>type</code> 'block' or 'network and <code>device</code>
+              of 'lun' with respect to how the LUN is presented to and
+              may used by the guest.
+
               </p>
               </dd>
           </dl>
index e38b92743de6d6c5ce9c5ca4439618eb30e7e463..f0f740068ade1df2c9ab281e3efe993e156ad3bc 100644 (file)
             <choice>
               <ref name="diskSourceNetwork"/>
               <ref name="diskSourceBlock"/>
+              <ref name="diskSourceVolume"/>
             </choice>
             <ref name="diskSpecsExtra"/>
           </interleave>
index 34e558160484c1ae1b6990c9dd3f3c96c4c86c4b..6bb85493ed89a17e5479bd23a8d235c41e8b6bfd 100644 (file)
@@ -8016,7 +8016,8 @@ qemuDomainUpdateDeviceLive(virConnectPtr conn,
 static int
 qemuDomainAttachDeviceConfig(virQEMUCapsPtr qemuCaps,
                              virDomainDefPtr vmdef,
-                             virDomainDeviceDefPtr dev)
+                             virDomainDeviceDefPtr dev,
+                             virConnectPtr conn)
 {
     virDomainDiskDefPtr disk;
     virDomainNetDefPtr net;
@@ -8033,6 +8034,8 @@ qemuDomainAttachDeviceConfig(virQEMUCapsPtr qemuCaps,
                            _("target %s already exists"), disk->dst);
             return -1;
         }
+        if (virStorageTranslateDiskSourcePool(conn, disk) < 0)
+            return -1;
         if (qemuCheckDiskConfig(disk) < 0)
             return -1;
         if (virDomainDiskInsert(vmdef, disk))
@@ -8501,7 +8504,8 @@ static int qemuDomainAttachDeviceFlags(virDomainPtr dom, const char *xml,
                                          VIR_DOMAIN_DEVICE_ACTION_ATTACH) < 0)
             goto endjob;
 
-        if ((ret = qemuDomainAttachDeviceConfig(qemuCaps, vmdef, dev)) < 0)
+        if ((ret = qemuDomainAttachDeviceConfig(qemuCaps, vmdef, dev,
+                                                dom->conn)) < 0)
             goto endjob;
     }