mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 01:45:17 +00:00
Add ability to set a default driver name/type when parsing disks
Record a default driver name/type in capabilities struct. Use this when parsing disks if value is not set in XML config. * src/conf/capabilities.h: Record default driver name/type for disks * src/conf/domain_conf.c: Fallback to default driver name/type when parsing disks * src/qemu/qemu_driver.c: Set default driver name/type to raw
This commit is contained in:
parent
68719c4bdd
commit
03ca42046a
@ -175,6 +175,9 @@ virCapabilitiesFree(virCapsPtr caps) {
|
||||
VIR_FREE(caps->host.secModel.doi);
|
||||
virCPUDefFree(caps->host.cpu);
|
||||
|
||||
VIR_FREE(caps->defaultDiskDriverName);
|
||||
VIR_FREE(caps->defaultDiskDriverType);
|
||||
|
||||
VIR_FREE(caps);
|
||||
}
|
||||
|
||||
|
@ -123,6 +123,8 @@ struct _virCaps {
|
||||
virCapsGuestPtr *guests;
|
||||
unsigned char macPrefix[VIR_MAC_PREFIX_BUFLEN];
|
||||
unsigned int emulatorRequired : 1;
|
||||
const char *defaultDiskDriverName;
|
||||
const char *defaultDiskDriverType;
|
||||
void *(*privateDataAllocFunc)(void);
|
||||
void (*privateDataFreeFunc)(void *);
|
||||
int (*privateDataXMLFormat)(virBufferPtr, void *);
|
||||
|
@ -1639,6 +1639,16 @@ virDomainDiskDefParseXML(virCapsPtr caps,
|
||||
def->serial = serial;
|
||||
serial = NULL;
|
||||
|
||||
if (!def->driverType &&
|
||||
caps->defaultDiskDriverType &&
|
||||
!(def->driverType = strdup(caps->defaultDiskDriverType)))
|
||||
goto no_memory;
|
||||
|
||||
if (!def->driverName &&
|
||||
caps->defaultDiskDriverName &&
|
||||
!(def->driverName = strdup(caps->defaultDiskDriverName)))
|
||||
goto no_memory;
|
||||
|
||||
if (def->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE
|
||||
&& virDomainDiskDefAssignAddress(caps, def) < 0)
|
||||
goto error;
|
||||
@ -1659,6 +1669,9 @@ cleanup:
|
||||
|
||||
return def;
|
||||
|
||||
no_memory:
|
||||
virReportOOMError();
|
||||
|
||||
error:
|
||||
virDomainDiskDefFree(def);
|
||||
def = NULL;
|
||||
@ -4275,7 +4288,8 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
|
||||
if (n && VIR_ALLOC_N(def->disks, n) < 0)
|
||||
goto no_memory;
|
||||
for (i = 0 ; i < n ; i++) {
|
||||
virDomainDiskDefPtr disk = virDomainDiskDefParseXML(caps, nodes[i],
|
||||
virDomainDiskDefPtr disk = virDomainDiskDefParseXML(caps,
|
||||
nodes[i],
|
||||
flags);
|
||||
if (!disk)
|
||||
goto error;
|
||||
|
@ -1361,6 +1361,14 @@ qemuCreateCapabilities(virCapsPtr oldcaps,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (driver->allowDiskFormatProbing) {
|
||||
caps->defaultDiskDriverName = NULL;
|
||||
caps->defaultDiskDriverType = NULL;
|
||||
} else {
|
||||
caps->defaultDiskDriverName = "qemu";
|
||||
caps->defaultDiskDriverType = "raw";
|
||||
}
|
||||
|
||||
/* Domain XML parser hooks */
|
||||
caps->privateDataAllocFunc = qemuDomainObjPrivateAlloc;
|
||||
caps->privateDataFreeFunc = qemuDomainObjPrivateFree;
|
||||
|
Loading…
x
Reference in New Issue
Block a user