From 785a8940eff01223fc813abaaf331c8a8225ec0c Mon Sep 17 00:00:00 2001 From: John Ferlan Date: Thu, 11 Jun 2015 17:07:38 -0400 Subject: [PATCH] scsi: Need to translate disk source pool in config attach path 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 | 13 +++++++++++-- docs/schemas/domaincommon.rng | 1 + src/qemu/qemu_driver.c | 8 ++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in index 0478cb2c04..b8af1d0133 100644 --- a/docs/formatdomain.html.in +++ b/docs/formatdomain.html.in @@ -1944,8 +1944,10 @@ defaulting to "disk".

Using "lun" (since 0.9.10) is only - valid when type is "block" or "network" using the iSCSI protocol, - and behaves identically to "disk", + valid when the type is "block" or "network" for + protocol='iscsi' or when the type + is "volume" when using an iSCSI source pool. + 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, @@ -2062,6 +2064,13 @@ Using "host" as the mode 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 disk configured using + type 'block' or 'network and device + of 'lun' with respect to how the LUN is presented to and + may used by the guest. +

diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index e38b92743d..f0f740068a 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -1218,6 +1218,7 @@ + diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 34e5581604..6bb85493ed 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -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; } -- GitLab