mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
save: support bypass-cache flag in qemu.conf
When auto-dumping a domain on crash events, or autostarting a domain with managed save state, let the user configure whether to imply the bypass cache flag. * src/qemu/qemu.conf (auto_dump_bypass_cache, auto_start_bypass_cache): Document new variables. * src/qemu/libvirtd_qemu.aug (vnc_entry): Let augeas parse them. * src/qemu/qemu_conf.h (qemud_driver): Store new preferences. * src/qemu/qemu_conf.c (qemudLoadDriverConfig): Parse them. * src/qemu/qemu_driver.c (processWatchdogEvent, qemuAutostartDomain): Honor them.
This commit is contained in:
parent
58e668d2ea
commit
a9f9545e12
@ -41,6 +41,8 @@ module Libvirtd_qemu =
|
|||||||
| str_entry "save_image_format"
|
| str_entry "save_image_format"
|
||||||
| str_entry "dump_image_format"
|
| str_entry "dump_image_format"
|
||||||
| str_entry "auto_dump_path"
|
| str_entry "auto_dump_path"
|
||||||
|
| bool_entry "auto_dump_bypass_cache"
|
||||||
|
| bool_entry "auto_start_bypass_cache"
|
||||||
| str_entry "hugetlbfs_mount"
|
| str_entry "hugetlbfs_mount"
|
||||||
| bool_entry "relaxed_acs_check"
|
| bool_entry "relaxed_acs_check"
|
||||||
| bool_entry "vnc_allow_host_audio"
|
| bool_entry "vnc_allow_host_audio"
|
||||||
|
@ -208,6 +208,22 @@
|
|||||||
#
|
#
|
||||||
# auto_dump_path = "/var/lib/libvirt/qemu/dump"
|
# auto_dump_path = "/var/lib/libvirt/qemu/dump"
|
||||||
|
|
||||||
|
# When a domain is configured to be auto-dumped, enabling this flag
|
||||||
|
# has the same effect as using the VIR_DUMP_BYPASS_CACHE flag with the
|
||||||
|
# virDomainCoreDump API. That is, the system will avoid using the
|
||||||
|
# file system cache while writing the dump file, but may cause
|
||||||
|
# slower operation.
|
||||||
|
#
|
||||||
|
# auto_dump_bypass_cache = 0
|
||||||
|
|
||||||
|
# When a domain is configured to be auto-started, enabling this flag
|
||||||
|
# has the same effect as using the VIR_DOMAIN_START_BYPASS_CACHE flag
|
||||||
|
# with the virDomainCreateWithFlags API. That is, the system will
|
||||||
|
# avoid using the file system cache when restoring any managed state
|
||||||
|
# file, but may cause slower operation.
|
||||||
|
#
|
||||||
|
# auto_start_bypass_cache = 0
|
||||||
|
|
||||||
# If provided by the host and a hugetlbfs mount point is configured,
|
# If provided by the host and a hugetlbfs mount point is configured,
|
||||||
# a guest may request huge page backing. When this mount point is
|
# a guest may request huge page backing. When this mount point is
|
||||||
# unspecified here, determination of a host mount point in /proc/mounts
|
# unspecified here, determination of a host mount point in /proc/mounts
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* qemu_conf.c: QEMU configuration management
|
* qemu_conf.c: QEMU configuration management
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006, 2007, 2008, 2009, 2010 Red Hat, Inc.
|
* Copyright (C) 2006-2011 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@ -378,6 +378,14 @@ int qemudLoadDriverConfig(struct qemud_driver *driver,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
p = virConfGetValue (conf, "auto_dump_bypass_cache");
|
||||||
|
CHECK_TYPE ("auto_dump_bypass_cache", VIR_CONF_LONG);
|
||||||
|
if (p) driver->autoDumpBypassCache = true;
|
||||||
|
|
||||||
|
p = virConfGetValue (conf, "auto_start_bypass_cache");
|
||||||
|
CHECK_TYPE ("auto_start_bypass_cache", VIR_CONF_LONG);
|
||||||
|
if (p) driver->autoStartBypassCache = true;
|
||||||
|
|
||||||
p = virConfGetValue (conf, "hugetlbfs_mount");
|
p = virConfGetValue (conf, "hugetlbfs_mount");
|
||||||
CHECK_TYPE ("hugetlbfs_mount", VIR_CONF_STRING);
|
CHECK_TYPE ("hugetlbfs_mount", VIR_CONF_STRING);
|
||||||
if (p && p->str) {
|
if (p && p->str) {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* qemu_conf.h: QEMU configuration management
|
* qemu_conf.h: QEMU configuration management
|
||||||
*
|
*
|
||||||
* Copyright (C) 2006-2007, 2009-2010 Red Hat, Inc.
|
* Copyright (C) 2006-2007, 2009-2011 Red Hat, Inc.
|
||||||
* Copyright (C) 2006 Daniel P. Berrange
|
* Copyright (C) 2006 Daniel P. Berrange
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
@ -119,6 +119,9 @@ struct qemud_driver {
|
|||||||
char *dumpImageFormat;
|
char *dumpImageFormat;
|
||||||
|
|
||||||
char *autoDumpPath;
|
char *autoDumpPath;
|
||||||
|
bool autoDumpBypassCache;
|
||||||
|
|
||||||
|
bool autoStartBypassCache;
|
||||||
|
|
||||||
pciDeviceList *activePciHostdevs;
|
pciDeviceList *activePciHostdevs;
|
||||||
|
|
||||||
|
@ -150,11 +150,11 @@ qemuAutostartDomain(void *payload, const void *name ATTRIBUTE_UNUSED, void *opaq
|
|||||||
vm->def->name,
|
vm->def->name,
|
||||||
err ? err->message : _("unknown error"));
|
err ? err->message : _("unknown error"));
|
||||||
} else {
|
} else {
|
||||||
/* XXX need to wire bypass-cache autostart into qemu.conf */
|
|
||||||
if (vm->autostart &&
|
if (vm->autostart &&
|
||||||
!virDomainObjIsActive(vm) &&
|
!virDomainObjIsActive(vm) &&
|
||||||
qemuDomainObjStart(data->conn, data->driver, vm,
|
qemuDomainObjStart(data->conn, data->driver, vm,
|
||||||
false, false, false) < 0) {
|
false, false,
|
||||||
|
data->driver->autoStartBypassCache) < 0) {
|
||||||
err = virGetLastError();
|
err = virGetLastError();
|
||||||
VIR_ERROR(_("Failed to autostart VM '%s': %s"),
|
VIR_ERROR(_("Failed to autostart VM '%s': %s"),
|
||||||
vm->def->name,
|
vm->def->name,
|
||||||
@ -2952,9 +2952,9 @@ static void processWatchdogEvent(void *data, void *opaque)
|
|||||||
goto endjob;
|
goto endjob;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* XXX wire up qemu.conf to support bypass-cache dumps */
|
|
||||||
ret = doCoreDump(driver, wdEvent->vm, dumpfile,
|
ret = doCoreDump(driver, wdEvent->vm, dumpfile,
|
||||||
getCompressionType(driver), false);
|
getCompressionType(driver),
|
||||||
|
driver->autoDumpBypassCache);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
qemuReportError(VIR_ERR_OPERATION_FAILED,
|
qemuReportError(VIR_ERR_OPERATION_FAILED,
|
||||||
"%s", _("Dump failed"));
|
"%s", _("Dump failed"));
|
||||||
|
Loading…
Reference in New Issue
Block a user