[libvirt] [PATCH 8/8] qemu: Support sgio setting for volume type disk

Osier Yang jyang at redhat.com
Fri Apr 5 14:45:05 UTC 2013


On 05/04/13 03:38, Osier Yang wrote:
> ---
>   src/qemu/qemu_process.c | 7 +++++--
>   1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
> index 3ac0c70..757f8b8 100644
> --- a/src/qemu/qemu_process.c
> +++ b/src/qemu/qemu_process.c
> @@ -3235,9 +3235,12 @@ qemuSetUnprivSGIO(virDomainDiskDefPtr disk)
>       /* "sgio" is only valid for block disk; cdrom
>        * and floopy disk can have empty source.
>        */
> -    if (disk->type != VIR_DOMAIN_DISK_TYPE_BLOCK ||
> +    if (!disk->src ||
>           disk->device != VIR_DOMAIN_DISK_DEVICE_LUN ||
> -        !disk->src)
> +        (disk->type != VIR_DOMAIN_DISK_TYPE_BLOCK &&
> +         !(disk->type == VIR_DOMAIN_DISK_TYPE_VOLUME &&
> +           disk->srcpool &&
> +           disk->srcpool->voltype == VIR_STORAGE_VOL_BLOCK)))
>           return 0;
>   
>       sysfs_path = virGetUnprivSGIOSysfsPath(disk->src, NULL);

With the following missed diff squashed in:


-------------- next part --------------
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index c7b8045..e67c960 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -1014,9 +1014,18 @@ qemuCheckSharedDisk(virHashTablePtr sharedDisks,
          disk->sgio == VIR_DOMAIN_DISK_SGIO_UNFILTERED))
         goto cleanup;
 
-    virReportError(VIR_ERR_OPERATION_INVALID,
-                   _("sgio of shared disk '%s' conflicts with other "
-                     "active domains"), disk->src);
+    if (disk->type == VIR_DOMAIN_DISK_TYPE_VOLUME) {
+        virReportError(VIR_ERR_OPERATION_INVALID,
+                       _("sgio of shared disk 'pool=%s' 'volume=%s' conflicts "
+                         "with other active domains"),
+                       disk->srcpool->pool,
+                       disk->srcpool->volume);
+    } else {
+        virReportError(VIR_ERR_OPERATION_INVALID,
+                       _("sgio of shared disk '%s' conflicts with other "
+                         "active domains"), disk->src);
+    }
+
     ret = -1;
 
 cleanup:


More information about the libvir-list mailing list