From 87be10858fed1311be435be82e30aecccf1d12a9 Mon Sep 17 00:00:00 2001 From: Dmitry Guryanov Date: Mon, 15 Dec 2014 15:47:24 +0300 Subject: [PATCH] parallels: set format for real disk devices It seems file format is usually specified event for real block devices. So report that file format is raw in virDomainGetXMLDesc and add checks for proper file format to prlsdkAddDisk. Signed-off-by: Dmitry Guryanov --- src/parallels/parallels_sdk.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/parallels/parallels_sdk.c b/src/parallels/parallels_sdk.c index 0980f507df..af0dcda7b4 100644 --- a/src/parallels/parallels_sdk.c +++ b/src/parallels/parallels_sdk.c @@ -476,6 +476,7 @@ prlsdkGetDiskInfo(PRL_HANDLE prldisk, virDomainDiskSetFormat(disk, VIR_STORAGE_FILE_PLOOP); } else { virDomainDiskSetType(disk, VIR_STORAGE_TYPE_BLOCK); + virDomainDiskSetFormat(disk, VIR_STORAGE_FILE_RAW); } if (isCdrom) @@ -2486,13 +2487,24 @@ static int prlsdkAddDisk(PRL_HANDLE sdkdom, virDomainDiskDefPtr disk) if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK && virDomainDiskGetFormat(disk) != VIR_STORAGE_FILE_PLOOP) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("Invalid disk format: %d"), disk->src->type); + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Invalid format of " + "disk %s, Parallels Cloud Server supports only " + "images in ploop format."), disk->src->path); goto cleanup; } emutype = PDT_USE_IMAGE_FILE; } else { + if (disk->device == VIR_DOMAIN_DISK_DEVICE_DISK && + (virDomainDiskGetFormat(disk) != VIR_STORAGE_FILE_RAW && + virDomainDiskGetFormat(disk) != VIR_STORAGE_FILE_NONE && + virDomainDiskGetFormat(disk) != VIR_STORAGE_FILE_AUTO)) { + + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Invalid format " + "of disk %s, it should be either not set, or set " + "to raw or auto."), disk->src->path); + goto cleanup; + } emutype = PDT_USE_REAL_DEVICE; } -- 2.47.2