提交 eee1763c 编写于 作者: C Cole Robinson

lxc: Drop container stdio as late as possible

Makes it more likely we get useful error output in the logs
上级 02e86910
...@@ -751,9 +751,9 @@ static int lxcContainerChild( void *data ) ...@@ -751,9 +751,9 @@ static int lxcContainerChild( void *data )
{ {
lxc_child_argv_t *argv = data; lxc_child_argv_t *argv = data;
virDomainDefPtr vmDef = argv->config; virDomainDefPtr vmDef = argv->config;
int ttyfd; int ttyfd = -1;
int ret = -1; int ret = -1;
char *ttyPath; char *ttyPath = NULL;
virDomainFSDefPtr root; virDomainFSDefPtr root;
virCommandPtr cmd = NULL; virCommandPtr cmd = NULL;
...@@ -786,16 +786,8 @@ static int lxcContainerChild( void *data ) ...@@ -786,16 +786,8 @@ static int lxcContainerChild( void *data )
virReportSystemError(errno, virReportSystemError(errno,
_("Failed to open tty %s"), _("Failed to open tty %s"),
ttyPath); ttyPath);
VIR_FREE(ttyPath);
goto cleanup; goto cleanup;
} }
VIR_FREE(ttyPath);
if (lxcContainerSetStdio(argv->monitor, ttyfd) < 0) {
VIR_FORCE_CLOSE(ttyfd);
goto cleanup;
}
VIR_FORCE_CLOSE(ttyfd);
if (lxcContainerSetupMounts(vmDef, root) < 0) if (lxcContainerSetupMounts(vmDef, root) < 0)
goto cleanup; goto cleanup;
...@@ -806,17 +798,28 @@ static int lxcContainerChild( void *data ) ...@@ -806,17 +798,28 @@ static int lxcContainerChild( void *data )
/* rename and enable interfaces */ /* rename and enable interfaces */
if (lxcContainerRenameAndEnableInterfaces(argv->nveths, if (lxcContainerRenameAndEnableInterfaces(argv->nveths,
argv->veths) < 0) argv->veths) < 0) {
goto cleanup; goto cleanup;
}
/* drop a set of root capabilities */ /* drop a set of root capabilities */
if (lxcContainerDropCapabilities() < 0) if (lxcContainerDropCapabilities() < 0)
goto cleanup; goto cleanup;
/* this function will only return if an error occured */ if (lxcContainerSetStdio(argv->monitor, ttyfd) < 0) {
ret = virCommandExec(cmd); goto cleanup;
}
ret = 0;
cleanup: cleanup:
VIR_FREE(ttyPath);
VIR_FORCE_CLOSE(ttyfd);
if (ret == 0) {
/* this function will only return if an error occured */
ret = virCommandExec(cmd);
}
virCommandFree(cmd); virCommandFree(cmd);
return ret; return ret;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册