From: Nikolay Shirokovskiy Date: Fri, 8 Apr 2016 07:41:32 +0000 (+0300) Subject: vz: fix vzCheckUnsupportedDisks format checks for cdroms X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=caff6b8043df9134b8dda1c84f1c828135a2b990;p=libvirt.git vz: fix vzCheckUnsupportedDisks format checks for cdroms Current version of the function does not check format of cdroms at all. At the same time prlsdkGetDiskInfo give hints that cdroms always have format VIR_STORAGE_FILE_RAW. So fix vzCheckUnsupportedDisks. About structure of checks. As we don't have means to store format in SDK we always have only one format in every situation. So instead of setting boolean let's get allowed format instead and finally compare it to the requested. This structure of checks seems stable to me because we have only one format in every situation. Signed-off-by: Nikolay Shirokovskiy --- diff --git a/src/vz/vz_utils.c b/src/vz/vz_utils.c index 49997f003a..d9da1e7834 100644 --- a/src/vz/vz_utils.c +++ b/src/vz/vz_utils.c @@ -392,7 +392,6 @@ vzCheckUnsupportedDisks(virDomainDefPtr def, vzCapabilitiesPtr vzCaps) size_t i, j; virDomainDiskDefPtr disk; virStorageFileFormat diskFormat; - bool supported; for (i = 0; i < def->ndisks; i++) { disk = def->disks[i]; @@ -400,30 +399,27 @@ vzCheckUnsupportedDisks(virDomainDefPtr def, vzCapabilitiesPtr vzCaps) if (vzCheckDiskUnsupportedParams(disk) < 0) return -1; - diskFormat = virDomainDiskGetFormat(disk); - supported = true; if (disk->src->type == VIR_STORAGE_TYPE_FILE) { - if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK && - diskFormat != VIR_STORAGE_FILE_NONE) { - + if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK) { if (IS_CT(def)) - supported = vzCaps->ctDiskFormat == diskFormat; + diskFormat = vzCaps->ctDiskFormat; else - supported = vzCaps->vmDiskFormat == diskFormat; + diskFormat = vzCaps->vmDiskFormat; + } else { + diskFormat = VIR_STORAGE_FILE_RAW; } } else { - if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK) { - supported = diskFormat == VIR_STORAGE_FILE_RAW || - diskFormat == VIR_STORAGE_FILE_NONE; - } + diskFormat = VIR_STORAGE_FILE_RAW; } - if (!supported) { + if (virDomainDiskGetFormat(disk) != VIR_STORAGE_FILE_NONE && + virDomainDiskGetFormat(disk) != diskFormat) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported format of disk %s"), disk->src->path); return -1; } + for (j = 0; vzCaps->diskBuses[j] != VIR_DOMAIN_DISK_BUS_LAST; j++) { if (disk->bus == vzCaps->diskBuses[j]) break;