From 1c46f4cc034e6c09cca50b24d1a50bdbd1acd3cb Mon Sep 17 00:00:00 2001 From: Ryota Ozaki Date: Sun, 27 Jun 2010 22:07:00 +0900 Subject: [PATCH] lxc: Fix virsh console doesn't work after restarting libvirtd Because tty path is unexpectedly not saved in the live configuration file of a domain, libvirtd cannot get the console of the domain back after restarting. The reason why the tty path isn't saved is that, to save the tty path, the save function, virDomainSaveConfig, requires that the target domain is running (pid != -1), however, lxc driver calls the function before starting the domain to pass the configuration to controller. To ensure to save the tty path, the patch lets lxc driver call the save function again after starting the domain. --- src/lxc/lxc_driver.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c index 19d4dcbe81..462bc9cc2a 100644 --- a/src/lxc/lxc_driver.c +++ b/src/lxc/lxc_driver.c @@ -1284,7 +1284,7 @@ static int lxcVmStart(virConnectPtr conn, if (lxcSetupInterfaces(conn, vm->def, &nveths, &veths) != 0) goto cleanup; - /* Persist the live configuration now we have veth & tty info */ + /* Save the configuration for the controller */ if (virDomainSaveConfig(driver->stateDir, vm->def) < 0) goto cleanup; @@ -1328,6 +1328,13 @@ static int lxcVmStart(virConnectPtr conn, goto cleanup; } + /* + * Again, need to save the live configuration, because the function + * requires vm->def->id != -1 to save tty info surely. + */ + if (virDomainSaveConfig(driver->stateDir, vm->def) < 0) + goto cleanup; + rc = 0; cleanup: