mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 17:34:18 +03:00
qemu: Autofill pstore path if missing
Introduced only a couple of commits ago (in v10.5.0-84-g90e50e67c6) the pstore device acts as a nonvolatile storage, where guest kernel can store information about crashes. This device, however, expects a file in the host from which the crash data is read. So far, we expected users to provide a path, but we can autogenerate one if missing. Just put it next to per-domain's NVRAM stores. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Andrea Bolognani <abologna@redhat.com>
This commit is contained in:
parent
7428738597
commit
de355b7873
@ -8683,8 +8683,7 @@ desired backend (only ``acpi-erst`` is accepted for now). Then it has the
|
|||||||
following child elements:
|
following child elements:
|
||||||
|
|
||||||
``path``
|
``path``
|
||||||
Represents a path in the host that backs the pstore device in the guest. It
|
Represents a path in the host that backs the pstore device in the guest.
|
||||||
is mandatory.
|
|
||||||
|
|
||||||
``size``
|
``size``
|
||||||
Configures the size of the persistent storage available to the guest. It is
|
Configures the size of the persistent storage available to the guest. It is
|
||||||
|
@ -6261,9 +6261,11 @@
|
|||||||
<value>acpi-erst</value>
|
<value>acpi-erst</value>
|
||||||
</attribute>
|
</attribute>
|
||||||
<interleave>
|
<interleave>
|
||||||
<element name="path">
|
<optional>
|
||||||
<ref name="absFilePath"/>
|
<element name="path">
|
||||||
</element>
|
<ref name="absFilePath"/>
|
||||||
|
</element>
|
||||||
|
</optional>
|
||||||
<element name="size">
|
<element name="size">
|
||||||
<ref name="scaledInteger"/>
|
<ref name="scaledInteger"/>
|
||||||
</element>
|
</element>
|
||||||
|
@ -6289,6 +6289,28 @@ qemuDomainMemoryDefPostParse(virDomainMemoryDef *mem, virArch arch,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
qemuDomainPstoreDefPostParse(virDomainPstoreDef *pstore,
|
||||||
|
const virDomainDef *def,
|
||||||
|
virQEMUDriver *driver)
|
||||||
|
{
|
||||||
|
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
||||||
|
|
||||||
|
switch (pstore->backend) {
|
||||||
|
case VIR_DOMAIN_PSTORE_BACKEND_ACPI_ERST:
|
||||||
|
if (!pstore->path)
|
||||||
|
pstore->path = g_strdup_printf("%s/%s_PSTORE.raw",
|
||||||
|
cfg->nvramDir, def->name);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_PSTORE_BACKEND_LAST:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
qemuDomainDeviceDefPostParse(virDomainDeviceDef *dev,
|
qemuDomainDeviceDefPostParse(virDomainDeviceDef *dev,
|
||||||
const virDomainDef *def,
|
const virDomainDef *def,
|
||||||
@ -6350,6 +6372,10 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDef *dev,
|
|||||||
parseFlags);
|
parseFlags);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_DEVICE_PSTORE:
|
||||||
|
ret = qemuDomainPstoreDefPostParse(dev->data.pstore, def, driver);
|
||||||
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_DEVICE_LEASE:
|
case VIR_DOMAIN_DEVICE_LEASE:
|
||||||
case VIR_DOMAIN_DEVICE_FS:
|
case VIR_DOMAIN_DEVICE_FS:
|
||||||
case VIR_DOMAIN_DEVICE_INPUT:
|
case VIR_DOMAIN_DEVICE_INPUT:
|
||||||
@ -6365,7 +6391,6 @@ qemuDomainDeviceDefPostParse(virDomainDeviceDef *dev,
|
|||||||
case VIR_DOMAIN_DEVICE_IOMMU:
|
case VIR_DOMAIN_DEVICE_IOMMU:
|
||||||
case VIR_DOMAIN_DEVICE_AUDIO:
|
case VIR_DOMAIN_DEVICE_AUDIO:
|
||||||
case VIR_DOMAIN_DEVICE_CRYPTO:
|
case VIR_DOMAIN_DEVICE_CRYPTO:
|
||||||
case VIR_DOMAIN_DEVICE_PSTORE:
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user