mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-11 22:21:31 +00:00
qemu: process: Export qemuPrepareNVRAM for use in snapshot code
Export qemuPrepareNVRAM so that it doesn't require the VM object. The snapshot code needs in the corner case of creating a snapshot of a freshly defined VM ensure that the nvram image exists in order to snapshot it. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
parent
d15eff6304
commit
a377404ed9
@ -4627,10 +4627,9 @@ qemuPrepareNVRAMHelper(int dstFD,
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
qemuPrepareNVRAMBlock(virDomainObj *vm,
|
qemuPrepareNVRAMBlock(virDomainLoaderDef *loader,
|
||||||
bool reset_nvram)
|
bool reset_nvram)
|
||||||
{
|
{
|
||||||
virDomainLoaderDef *loader = vm->def->os.loader;
|
|
||||||
g_autoptr(virCommand) qemuimg = NULL;
|
g_autoptr(virCommand) qemuimg = NULL;
|
||||||
const char *templateFormatStr = "raw";
|
const char *templateFormatStr = "raw";
|
||||||
|
|
||||||
@ -4691,13 +4690,12 @@ qemuPrepareNVRAMBlock(virDomainObj *vm,
|
|||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
qemuPrepareNVRAMFile(virDomainObj *vm,
|
qemuPrepareNVRAMFile(virQEMUDriver *driver,
|
||||||
|
virDomainLoaderDef *loader,
|
||||||
bool reset_nvram)
|
bool reset_nvram)
|
||||||
{
|
{
|
||||||
qemuDomainObjPrivate *priv = vm->privateData;
|
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
|
||||||
g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(priv->driver);
|
|
||||||
VIR_AUTOCLOSE srcFD = -1;
|
VIR_AUTOCLOSE srcFD = -1;
|
||||||
virDomainLoaderDef *loader = vm->def->os.loader;
|
|
||||||
struct qemuPrepareNVRAMHelperData data;
|
struct qemuPrepareNVRAMHelperData data;
|
||||||
|
|
||||||
if (virFileExists(loader->nvram->path) && !reset_nvram)
|
if (virFileExists(loader->nvram->path) && !reset_nvram)
|
||||||
@ -4739,21 +4737,24 @@ qemuPrepareNVRAMFile(virDomainObj *vm,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
int
|
||||||
qemuPrepareNVRAM(virDomainObj *vm,
|
qemuPrepareNVRAM(virQEMUDriver *driver,
|
||||||
|
virDomainDef *def,
|
||||||
bool reset_nvram)
|
bool reset_nvram)
|
||||||
{
|
{
|
||||||
virDomainLoaderDef *loader = vm->def->os.loader;
|
virDomainLoaderDef *loader = def->os.loader;
|
||||||
|
|
||||||
if (!loader || !loader->nvram)
|
if (!loader || !loader->nvram)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
VIR_DEBUG("nvram='%s'", NULLSTR(loader->nvram->path));
|
||||||
|
|
||||||
switch (virStorageSourceGetActualType(loader->nvram)) {
|
switch (virStorageSourceGetActualType(loader->nvram)) {
|
||||||
case VIR_STORAGE_TYPE_FILE:
|
case VIR_STORAGE_TYPE_FILE:
|
||||||
return qemuPrepareNVRAMFile(vm, reset_nvram);
|
return qemuPrepareNVRAMFile(driver, loader, reset_nvram);
|
||||||
|
|
||||||
case VIR_STORAGE_TYPE_BLOCK:
|
case VIR_STORAGE_TYPE_BLOCK:
|
||||||
return qemuPrepareNVRAMBlock(vm, reset_nvram);
|
return qemuPrepareNVRAMBlock(loader, reset_nvram);
|
||||||
|
|
||||||
case VIR_STORAGE_TYPE_DIR:
|
case VIR_STORAGE_TYPE_DIR:
|
||||||
case VIR_STORAGE_TYPE_NETWORK:
|
case VIR_STORAGE_TYPE_NETWORK:
|
||||||
@ -7418,7 +7419,8 @@ qemuProcessPrepareHost(virQEMUDriver *driver,
|
|||||||
qemuProcessMakeDir(driver, vm, priv->channelTargetDir) < 0)
|
qemuProcessMakeDir(driver, vm, priv->channelTargetDir) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (qemuPrepareNVRAM(vm, !!(flags & VIR_QEMU_PROCESS_START_RESET_NVRAM)) < 0)
|
if (qemuPrepareNVRAM(driver, vm->def,
|
||||||
|
!!(flags & VIR_QEMU_PROCESS_START_RESET_NVRAM)) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (vm->def->vsock) {
|
if (vm->def->vsock) {
|
||||||
|
@ -258,3 +258,7 @@ int qemuProcessSetupEmulator(virDomainObj *vm);
|
|||||||
|
|
||||||
void qemuProcessHandleNbdkitExit(qemuNbdkitProcess *nbdkit,
|
void qemuProcessHandleNbdkitExit(qemuNbdkitProcess *nbdkit,
|
||||||
virDomainObj *vm);
|
virDomainObj *vm);
|
||||||
|
|
||||||
|
int qemuPrepareNVRAM(virQEMUDriver *driver,
|
||||||
|
virDomainDef *def,
|
||||||
|
bool reset_nvram);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user