qemu: Support sgio setting for volume type disk

This commit is contained in:
Osier Yang 2013-04-05 03:38:02 +08:00
parent 464d4e559c
commit a9762b730b
2 changed files with 17 additions and 5 deletions

View File

@ -996,9 +996,18 @@ qemuCheckSharedDisk(virHashTablePtr sharedDisks,
disk->sgio == VIR_DOMAIN_DISK_SGIO_UNFILTERED))
goto cleanup;
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:

View File

@ -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);