On Thu, Jul 21, 2016 at 03:37:27PM +0000, Katerina Koukiou wrote:
Add support for saving an lxc domain's state into files with
lxcDomainSave
and restore from file with lxcDomainRestore.
Usage: virsh save [domain-name] [domain-id or domain-uuid] [directory name]
Signed-off-by: Katerina Koukiou <k.koukiou(a)gmail.com>
---
src/lxc/lxc_driver.c | 234 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 234 insertions(+)
diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index bd47c91..cc05eef 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -84,6 +84,7 @@
#include "virhostdev.h"
#include "netdev_bandwidth_conf.h"
+#include "lxc_criu.h"
#define VIR_FROM_THIS VIR_FROM_LXC
VIR_LOG_INIT("lxc.lxc_driver");
@@ -3205,6 +3206,235 @@ static int lxcDomainResume(virDomainPtr dom)
}
static int
+lxcDoDomainSave(virLXCDriverPtr driver, virDomainObjPtr vm,
+ const char *to)
+{
+ int ret = -1;
+ virCapsPtr caps = NULL;
+ uint32_t xml_len = -1;
+ char *xml = NULL;
+ char xmlLen[33];
+ char *xml_image_path = NULL;
+ char *str = NULL;
+
+ if (!(caps = virLXCDriverGetCapabilities(driver, false)))
+ goto cleanup;
+
+ if ((xml = virDomainDefFormat(vm->def, caps, 0)) == NULL)
+ goto cleanup;
+
+ if ((ret = lxcCriuDump(driver, vm, to)) != 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Failed to checkpoint domain with CRIU"));
+ goto cleanup;
+ }
+
+ virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF,
+ VIR_DOMAIN_SHUTOFF_SAVED);
+
+ if (virAsprintf(&xml_image_path, "%s/xml-image", to) < 0) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("Failed to write image path"));
+ goto cleanup;
+ }
The 'to' argument to virDomainSave is defined to be a filename,
not a directory. So as mentioned in previous patch, you need to
get all the dump state into that file, both XML and container
state.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|