Skip to content

Commit

Permalink
improve LXC_CMD_GET_CGROUP compatibility
Browse files Browse the repository at this point in the history
When a newer lxc library communicates with an older one
(such as running an lxc 4.0 lxc-freeze on a longer running
container which was started while lxc was still at version
3), the LXC_CMD_GET_LIMITING_CGROUP command is not
available, causing the remote to just close the socket.
Catch this and try the previous command instead.

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
  • Loading branch information
Blub authored and Christian Brauner committed May 25, 2020
1 parent 3537c31 commit 8bbfacd
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion src/lxc/commands.c
Expand Up @@ -509,8 +509,21 @@ static char *lxc_cmd_get_cgroup_path_do(const char *name, const char *lxcpath,
if (ret < 0)
return NULL;

if (ret == 0)
if (ret == 0) {
if (command == LXC_CMD_GET_LIMITING_CGROUP) {
/*
* This may indicate that the container was started
* under an ealier version before
* `cgroup_advanced_isolation` as implemented, there
* it sees an unknown command and just closes the
* socket, sending us an EOF.
*/
return lxc_cmd_get_cgroup_path_do(name, lxcpath,
subsystem,
LXC_CMD_GET_CGROUP);
}
return NULL;
}

if (cmd.rsp.ret < 0 || cmd.rsp.datalen < 0)
return NULL;
Expand Down

0 comments on commit 8bbfacd

Please sign in to comment.