mirror of https://gitee.com/openkylin/libvirt.git
qemu: domain: Extract disk post parse code into a function
Later on, more stuff will be added so prevent the main function growing out of control. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
6a58e3102b
commit
db4dd58d6c
|
@ -5687,6 +5687,46 @@ qemuDomainChrDefPostParse(virDomainChrDefPtr chr,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
qemuDomainDeviceDiskDefPostParse(virDomainDiskDefPtr disk,
|
||||||
|
virQEMUDriverConfigPtr cfg)
|
||||||
|
{
|
||||||
|
/* set default disk types and drivers */
|
||||||
|
/* assign default storage format and driver according to config */
|
||||||
|
if (cfg->allowDiskFormatProbing) {
|
||||||
|
/* default disk format for drives */
|
||||||
|
if (virDomainDiskGetFormat(disk) == VIR_STORAGE_FILE_NONE &&
|
||||||
|
(virDomainDiskGetType(disk) == VIR_STORAGE_TYPE_FILE ||
|
||||||
|
virDomainDiskGetType(disk) == VIR_STORAGE_TYPE_BLOCK))
|
||||||
|
virDomainDiskSetFormat(disk, VIR_STORAGE_FILE_AUTO);
|
||||||
|
|
||||||
|
/* default disk format for mirrored drive */
|
||||||
|
if (disk->mirror &&
|
||||||
|
disk->mirror->format == VIR_STORAGE_FILE_NONE)
|
||||||
|
disk->mirror->format = VIR_STORAGE_FILE_AUTO;
|
||||||
|
} else {
|
||||||
|
/* default driver if probing is forbidden */
|
||||||
|
if (!virDomainDiskGetDriver(disk) &&
|
||||||
|
virDomainDiskSetDriver(disk, "qemu") < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
/* default disk format for drives */
|
||||||
|
if (virDomainDiskGetFormat(disk) == VIR_STORAGE_FILE_NONE &&
|
||||||
|
(virDomainDiskGetType(disk) == VIR_STORAGE_TYPE_FILE ||
|
||||||
|
virDomainDiskGetType(disk) == VIR_STORAGE_TYPE_BLOCK))
|
||||||
|
virDomainDiskSetFormat(disk, VIR_STORAGE_FILE_RAW);
|
||||||
|
|
||||||
|
/* default disk format for mirrored drive */
|
||||||
|
if (disk->mirror &&
|
||||||
|
disk->mirror->format == VIR_STORAGE_FILE_NONE)
|
||||||
|
disk->mirror->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
|
qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
|
||||||
const virDomainDef *def,
|
const virDomainDef *def,
|
||||||
|
@ -5711,40 +5751,9 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* set default disk types and drivers */
|
if (dev->type == VIR_DOMAIN_DEVICE_DISK &&
|
||||||
if (dev->type == VIR_DOMAIN_DEVICE_DISK) {
|
qemuDomainDeviceDiskDefPostParse(dev->data.disk, cfg) < 0)
|
||||||
virDomainDiskDefPtr disk = dev->data.disk;
|
goto cleanup;
|
||||||
|
|
||||||
/* assign default storage format and driver according to config */
|
|
||||||
if (cfg->allowDiskFormatProbing) {
|
|
||||||
/* default disk format for drives */
|
|
||||||
if (virDomainDiskGetFormat(disk) == VIR_STORAGE_FILE_NONE &&
|
|
||||||
(virDomainDiskGetType(disk) == VIR_STORAGE_TYPE_FILE ||
|
|
||||||
virDomainDiskGetType(disk) == VIR_STORAGE_TYPE_BLOCK))
|
|
||||||
virDomainDiskSetFormat(disk, VIR_STORAGE_FILE_AUTO);
|
|
||||||
|
|
||||||
/* default disk format for mirrored drive */
|
|
||||||
if (disk->mirror &&
|
|
||||||
disk->mirror->format == VIR_STORAGE_FILE_NONE)
|
|
||||||
disk->mirror->format = VIR_STORAGE_FILE_AUTO;
|
|
||||||
} else {
|
|
||||||
/* default driver if probing is forbidden */
|
|
||||||
if (!virDomainDiskGetDriver(disk) &&
|
|
||||||
virDomainDiskSetDriver(disk, "qemu") < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
/* default disk format for drives */
|
|
||||||
if (virDomainDiskGetFormat(disk) == VIR_STORAGE_FILE_NONE &&
|
|
||||||
(virDomainDiskGetType(disk) == VIR_STORAGE_TYPE_FILE ||
|
|
||||||
virDomainDiskGetType(disk) == VIR_STORAGE_TYPE_BLOCK))
|
|
||||||
virDomainDiskSetFormat(disk, VIR_STORAGE_FILE_RAW);
|
|
||||||
|
|
||||||
/* default disk format for mirrored drive */
|
|
||||||
if (disk->mirror &&
|
|
||||||
disk->mirror->format == VIR_STORAGE_FILE_NONE)
|
|
||||||
disk->mirror->format = VIR_STORAGE_FILE_RAW;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dev->type == VIR_DOMAIN_DEVICE_VIDEO) {
|
if (dev->type == VIR_DOMAIN_DEVICE_VIDEO) {
|
||||||
if (dev->data.video->type == VIR_DOMAIN_VIDEO_TYPE_DEFAULT) {
|
if (dev->data.video->type == VIR_DOMAIN_VIDEO_TYPE_DEFAULT) {
|
||||||
|
|
Loading…
Reference in New Issue