]> git.proxmox.com Git - mirror_lxc.git/log
mirror_lxc.git
9 years agodoc: Add Korean man pages
Sungbae Yoo [Thu, 11 Jun 2015 00:16:54 +0000 (09:16 +0900)]
doc: Add Korean man pages

Signed-off-by: Sungbae Yoo <sungbae.yoo@samsung.com>
9 years agoMerge pull request #557 from dangowrt/fix-build-on-ppc
Stéphane Graber [Tue, 9 Jun 2015 11:21:33 +0000 (07:21 -0400)]
Merge pull request #557 from dangowrt/fix-build-on-ppc

fix build on mpc85xx

9 years agofix build on mpc85xx
Daniel Golle [Tue, 9 Jun 2015 10:58:12 +0000 (12:58 +0200)]
fix build on mpc85xx

Initialize ret to 0 so compiler no longer complains about
monitor.c: In function 'lxc_monitor_open':
monitor.c:212:5: error: 'ret' may be used uninitialized in this function [-Werror=maybe-uninitialized]

https://github.com/openwrt/packages/issues/1356

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
9 years agocoverity: don't risk exec()ing NULL
Serge Hallyn [Mon, 8 Jun 2015 15:37:55 +0000 (10:37 -0500)]
coverity: don't risk exec()ing NULL

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
9 years agocoverity: fix use-after-free in cgmanager.
Serge Hallyn [Mon, 8 Jun 2015 15:33:22 +0000 (10:33 -0500)]
coverity: fix use-after-free in cgmanager.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
9 years agoFix bdev.h
Stéphane Graber [Thu, 4 Jun 2015 01:45:23 +0000 (21:45 -0400)]
Fix bdev.h

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoRevert bdev.h to the way it was
Stéphane Graber [Wed, 3 Jun 2015 23:37:59 +0000 (19:37 -0400)]
Revert bdev.h to the way it was

Instead of re-defining MS_ options all over the place, just revert the
last change to bdev.h so we have all the defines in there again.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoDefine MS_RELATIME for Android
Stéphane Graber [Wed, 3 Jun 2015 21:08:11 +0000 (17:08 -0400)]
Define MS_RELATIME for Android

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoDefine MS_REC and MS_SLAVE for Android in bdev.c
Stéphane Graber [Wed, 3 Jun 2015 19:07:08 +0000 (15:07 -0400)]
Define MS_REC and MS_SLAVE for Android in bdev.c

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodon't dereference a NULL c->lxc_conf
Serge Hallyn [Wed, 3 Jun 2015 17:20:19 +0000 (17:20 +0000)]
don't dereference a NULL c->lxc_conf

Commit 37cf711b added a destroy hook, but when it checks
at destroy time whether that hook exists, it assumes that
c->lxc_conf is good.  In fact lxc_conf can be NULL, so check
for that.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodon't hardcode the path to criu when checking versions
Tycho Andersen [Wed, 3 Jun 2015 06:13:23 +0000 (00:13 -0600)]
don't hardcode the path to criu when checking versions

We use the right path when actually execing criu to checkpoint and restore, but
when checking versions we didn't. Let's use the right path.

Reported-by: Dietmar Maurer <dietmar@proxmox.com>
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodetect whether cgmanager_list_controllers is available
Serge Hallyn [Wed, 3 Jun 2015 05:03:39 +0000 (05:03 +0000)]
detect whether cgmanager_list_controllers is available

and don't use it if not. This fixes failure to build with older
cgmanager.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoapi_start: always close fds 0-2 when daemonized
Serge Hallyn [Tue, 2 Jun 2015 22:33:34 +0000 (22:33 +0000)]
api_start: always close fds 0-2 when daemonized

commit 507cee3618237d3 moved the close and re-open of fds 0-2 into
do_start.  But this means that the lxc monitor itself keeps the
caller's fds 0-2 open, which is wrong for daemonized containers.

Closes #548

Reported-by: Mathieu Le Marec - Pasquet <kiorky@cryptelium.net>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agocgmanager: attach: never use 'all' controller
Serge Hallyn [Wed, 27 May 2015 10:05:16 +0000 (10:05 +0000)]
cgmanager: attach: never use 'all' controller

We were using 'all' controller if current was in all the
same cgroup.  That doesn't suffice.  We'd have to check
the target.  At that point we may as well just attach
controller by controller.

An optimization to consider is to check the /proc/initpid/cgroup
for all identical controllers.  Let's start by just getting it
right.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodoc: Add the description of lxc.hook.destroy in Japanese lxc.container.conf(5)
KATOH Yasufumi [Wed, 27 May 2015 07:07:58 +0000 (16:07 +0900)]
doc: Add the description of lxc.hook.destroy in Japanese lxc.container.conf(5)

Update for commit 37cf711

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoc/r: remember to clean up pidfile
Tycho Andersen [Tue, 2 Jun 2015 03:14:57 +0000 (21:14 -0600)]
c/r: remember to clean up pidfile

When restoring, we didn't clean up the pidfile that criu uses to pass us the
init pid on error or success; let's do that.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoFix ABI compatibility
Stéphane Graber [Fri, 29 May 2015 15:39:25 +0000 (11:39 -0400)]
Fix ABI compatibility

Until we bump the SONAME to liblxc2, only symbol additions and struct
member additions are allowed.

Adding struct members in the middle of the struct breaks backward
compatibility.

This commit makes it clear when struct members were added and moves a
few members that were added in the middle of the 1.0 struct to the end
of it.

Note that unfortunately that means we're breaking backward compatibility
between LXC 1.1.0 and the state after this commit, given 1.1 is
reasonably new, this is the least damaging way of fixing the problem.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoaufs: Support unprivileged clone, mount
KATOH Yasufumi [Thu, 21 May 2015 08:36:49 +0000 (17:36 +0900)]
aufs: Support unprivileged clone, mount

Current aufs supports FS_USERNS_MOUNT by using allow_userns module
parameter. It allows root in userns to mount aufs.

This patch allows an unprivileged container to use aufs. The value of
xino option is changed to /dev/shm/aufs.xino that an unpriv user can
write.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoproc update - don't assume we are pid 1
Serge Hallyn [Sun, 17 May 2015 20:14:13 +0000 (20:14 +0000)]
proc update - don't assume we are pid 1

(I erred in the first patch, causing every lxc-attach to unmount the
container-'s /proc)

Since we now use mount_proc_if_needed() from attach, as opposed to only
from start, we cannot assume we are pid 1.  So fix the check for whether
to mount a new proc.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoattach: mount a sane prox for LSM setup
Serge Hallyn [Sun, 17 May 2015 13:04:47 +0000 (13:04 +0000)]
attach: mount a sane prox for LSM setup

To set lsm labels, a namespace-local proc mount is needed.

If a container does not have a lxc.mount.auto = proc set, then
tasks in the container do not have a correct /proc mount until
init feels like doing the mount.  At startup we handlie this
by mounting a temporary /proc if needed.  We weren't doing this
at attach, though, so that

lxc-start -n $container
lxc-wait -t 5 -s RUNNING -n $container
lxc-attach -n $container -- uname -a

could in a racy way fail with something like

lxc-attach: lsm/apparmor.c: apparmor_process_label_set: 183 No such file or directory - failed to change apparmor profile to lxc-container-default

Thanks to Chris Townsend for finding this bug at
https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1452451

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-busybox: Prevent copying binaries from /usr/local to container
Bogdan Purcareata [Tue, 12 May 2015 09:45:28 +0000 (09:45 +0000)]
lxc-busybox: Prevent copying binaries from /usr/local to container

On certain systems, some binaries needed by the container features (dropbear,
openssh), may be placed in non-standard (aka non-distribution-managed
locations), such as /usr/local/*, /opt/local/*, etc. Don't copy the respective
binaries in the container and return a clear error why.

The user should only use these binaries if they are installed at system-wide
locations on the host, such as /{s,}bin or /usr/{s,}bin.

v2:
- check that binary paths adhere to /{,usr/}{,s}bin only

Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agolxc-busybox: make some OpenSSH tools optional
Bogdan Purcareata [Tue, 12 May 2015 09:45:27 +0000 (09:45 +0000)]
lxc-busybox: make some OpenSSH tools optional

Currently, when installing OpenSSH in a Busybox container, the template searches
for all the OpenSSH client binaries available in the Debian distro package. The
included tools might differ from distro to distro, so make part of the tools
optional. The mandatory tools, without which installing OpenSSH fails, are
"sshd" for the server and "ssh" and "scp" for the client.

Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agodoc: Add the description of macvlan passthru mode in Japanese lxc.container.conf(5)
KATOH Yasufumi [Tue, 26 May 2015 09:11:52 +0000 (18:11 +0900)]
doc: Add the description of macvlan passthru mode in Japanese lxc.container.conf(5)

Update for commit c15ea60

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodoc: Update the description of -L option in lxc-autostart(1)
KATOH Yasufumi [Wed, 13 May 2015 06:19:17 +0000 (15:19 +0900)]
doc: Update the description of -L option in lxc-autostart(1)

Add the description about displaying the value of wait delays for -L
option

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agodoc: Fix the mistranslation about lxc.group in Japanese lxc.container.conf(5)
KATOH Yasufumi [Wed, 13 May 2015 06:19:16 +0000 (15:19 +0900)]
doc: Fix the mistranslation about lxc.group in Japanese lxc.container.conf(5)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoenable cgmanager support for Travis CI
S.Çağlar Onur [Tue, 12 May 2015 18:30:33 +0000 (14:30 -0400)]
enable cgmanager support for Travis CI

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoc/r: complain when criu isn't exec()'d correctly
Tycho Andersen [Wed, 6 May 2015 15:25:31 +0000 (09:25 -0600)]
c/r: complain when criu isn't exec()'d correctly

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoUse 'cgm listcontrollers' list rather than /proc/self/cgroups
Serge Hallyn [Fri, 1 May 2015 21:11:28 +0000 (21:11 +0000)]
Use 'cgm listcontrollers' list rather than /proc/self/cgroups

to populate the list of subsystems to use.

Cgmanager can be started with some subsystems disabled (i.e.
cgmanager -M cpuset).  If lxc using cgmanager then uses the
/proc/self/cgroup output to determine which controllers to use,
it will fail when trying to do things to cpuset.  Instead, ask
cgmanager which controllers to use.

This still defers (per patch 1/1) to the lxc.cgroup.use values.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agomake cgmanager follow lxc.cgroup.use
Serge Hallyn [Fri, 1 May 2015 15:09:41 +0000 (15:09 +0000)]
make cgmanager follow lxc.cgroup.use

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-destroy: remove btrfs subvolumes
Serge Hallyn [Tue, 28 Apr 2015 13:31:05 +0000 (13:31 +0000)]
lxc-destroy: remove btrfs subvolumes

Doing this requires some btrfs functions from bdev to be used in
utils.c  Because utils.h is imported by lxc_init.c, I had to create
a new initutils.[ch] which are used by both lxc_init.c and utils.c
We could instead put the btrfs functions into utils.c, which would
be a shorter patch, but it really doesn't belong there.  So I went
the other way figuring there may be more such cases coming up of
fns in utils.c needing code from bdev.c which can't go into lxc_init.

Currently, if we detect a btrfs subvolume we just remove it.  The
st_dev on that dir is different, so we cannot detect if this is
bound in from another fs easily.  If we care, we should check
whether this is a mountpoint, this patch doesn't do that.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoUpdate lxc-debian.in
有张纸 [Fri, 22 May 2015 13:26:35 +0000 (21:26 +0800)]
Update lxc-debian.in

fix "bash: warning: setlocale: LC_ALL: cannot change locale"

Signed-off-by: <feng xiahou xiahoufeng@yahoo.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoMerge pull request #536 from regit/passthru-v1.2
Stéphane Graber [Mon, 25 May 2015 15:51:07 +0000 (11:51 -0400)]
Merge pull request #536 from regit/passthru-v1.2

Passthru v1.2

9 years agodoc: add 'macvlan' 'passthru' mode
Eric Leblond [Sat, 23 May 2015 15:50:31 +0000 (17:50 +0200)]
doc: add 'macvlan' 'passthru' mode

This patch also reword the macvlan section which was hard to read.

Signed-off-by: Eric Leblond <eric@regit.org>
9 years agoMerge pull request #522 from ysbnim/master
Stéphane Graber [Mon, 25 May 2015 15:07:10 +0000 (11:07 -0400)]
Merge pull request #522 from ysbnim/master

config : add lxc.hook.destroy option

9 years agoMerge pull request #526 from Azendale/master
Stéphane Graber [Mon, 25 May 2015 15:06:07 +0000 (11:06 -0400)]
Merge pull request #526 from Azendale/master

Change lxc-clone to use 'rsync -aH' instead of just 'rsync -a'

9 years agoEasy to read tiemstamp in log
Stéphane Graber [Mon, 25 May 2015 15:04:33 +0000 (11:04 -0400)]
Easy to read tiemstamp in log

Signed-off-by: Gyeongmin Kim <gyeongmintwo@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agomacvlan: add 'passthru' mode
Eric Leblond [Wed, 4 Mar 2015 16:22:52 +0000 (17:22 +0100)]
macvlan: add 'passthru' mode

In setup where we want to sniff with an IDS from inside a container
we can use the 'passthru' mode of macvlan. This was not accessible
from the config and this patch fixes the issue.

Signed-off-by: Eric Leblond <eric@regit.org>
9 years agocoverity: free 'result' in error case.
Serge Hallyn [Sun, 17 May 2015 12:30:57 +0000 (07:30 -0500)]
coverity: free 'result' in error case.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
9 years agoChange lxc-clone to use 'rsync -aH' instead of just 'rsync -a' for cloning to fix...
Erik B. Andersen [Fri, 15 May 2015 04:39:57 +0000 (21:39 -0700)]
Change lxc-clone to use 'rsync -aH' instead of just 'rsync -a' for cloning to fix Launchpad Bug #1441307.

Signed-off-by: Erik B. Andersen <erik.b.andersen@gmail.com>
9 years agoMerge pull request #523 from lucaswerkmeister/fix521
Stéphane Graber [Thu, 14 May 2015 22:16:40 +0000 (18:16 -0400)]
Merge pull request #523 from lucaswerkmeister/fix521

Use POSIX-compliant function names in bash completion

9 years agoUse POSIX-compliant function names in bash completion
Lucas Werkmeister [Thu, 14 May 2015 20:12:52 +0000 (22:12 +0200)]
Use POSIX-compliant function names in bash completion

When running in posix mode (for example, because it was invoked as `sh`,
or with the --posix option), bash rejects the function names previously
used because they contain hyphens, which are not legal POSIX names, and
exits immediately.

This is a particularly serious problem on a system in which the
following three conditions hold:

1. The `sh` executable is provided by bash, e. g. via a symlink
2. Gnome Display Manager is used to launch X sessions
3. Bash completion is loaded in the (system or user) profile file
   instead of in the bashrc file

In that case, GDM's Xsession script (run with `sh`, i. e., bash in posix
mode) sources the profile files, thus causing the shell to load the bash
completion files. Upon encountering the non-POSIX-compliant function
names, bash would then exit, immediately ending the X session.

Fixes #521.

Signed-off-by: Lucas Werkmeister <mail@lucaswerkmeister.de>
9 years agoconfig : add lxc.hook.destroy option
Sungbae Yoo [Tue, 12 May 2015 07:56:12 +0000 (16:56 +0900)]
config : add lxc.hook.destroy option

Signed-off-by: Sungbae Yoo <sungbae.yoo@samsung.com>
9 years agolxc-debian.in: Fixed errors if dbus is not installed
Cyril Bitterich [Sat, 9 May 2015 19:57:14 +0000 (21:57 +0200)]
lxc-debian.in: Fixed errors if dbus is not installed

The lxc-debian template debootstraps a minimum debian system which does not contain dbus.
If systemd is used this will result in getty-static.service to be used instead of getty@ .
The systemd default files uses 6 tty's instead of the 4 the script creates.
This will lead to repeated error messages in the systemd journal.

Signed-off-by: Cyril Bitterich <Cyril.Bitterich@1und1.de>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoMerge pull request #499 from krichter722/gitignore
Stéphane Graber [Mon, 11 May 2015 20:20:26 +0000 (20:20 +0000)]
Merge pull request #499 from krichter722/gitignore

added build and test results to .gitignore

9 years agoadded doc/api/doxygen_sqlite3.db to .gitignore
Karl-Philipp Richter [Mon, 11 May 2015 19:59:19 +0000 (21:59 +0200)]
added doc/api/doxygen_sqlite3.db to .gitignore

Signed-off-by: Karl-Philipp Richter <krichter722@aol.de>
9 years agoMerge pull request #504 from thmo/lua53
Stéphane Graber [Mon, 11 May 2015 18:09:54 +0000 (18:09 +0000)]
Merge pull request #504 from thmo/lua53

Fix Lua 5.3 compatibility code.

9 years agoMerge pull request #498 from brauner/master
Stéphane Graber [Mon, 11 May 2015 18:03:09 +0000 (18:03 +0000)]
Merge pull request #498 from brauner/master

Make lxc-checkconfig work with kernel versions > 3

9 years agoMerge pull request #486 from dikei/master
Stéphane Graber [Mon, 11 May 2015 17:52:48 +0000 (17:52 +0000)]
Merge pull request #486 from dikei/master

Sort the cgroup memory settings before applying.

9 years agoMerge pull request #512 from martinpitt/master
Serge Hallyn [Thu, 7 May 2015 13:55:02 +0000 (08:55 -0500)]
Merge pull request #512 from martinpitt/master

Call /lib/apparmor/profile-load directly instead of the wrapper

9 years agoCall /lib/apparmor/profile-load directly instead of the wrapper
Martin Pitt [Thu, 7 May 2015 11:38:50 +0000 (13:38 +0200)]
Call /lib/apparmor/profile-load directly instead of the wrapper

AppArmor ships /lib/apparmor/profile-load. /lib/init/apparmor-profile-load is
merely a wrapper which calls the former, so just call it directly to avoid the
dependency on the wrapper.

LP: #1432683

9 years agoProperly free memory of sorted cgroup settings
Kien Truong [Mon, 6 Apr 2015 16:20:43 +0000 (17:20 +0100)]
Properly free memory of sorted cgroup settings

We need to use lxc_list_for_each_safe, otherwise de-allocation
will fail with a list size bigger than 2. The pointer to the head
of the list also need freeing after we've freed all other elements
of the list.

Signed-off-by: Kien Truong <duckientruong@gmail.com>
9 years agoCheck malloc failure when sorting cgroup settings.
Kien Truong [Mon, 6 Apr 2015 16:05:20 +0000 (17:05 +0100)]
Check malloc failure when sorting cgroup settings.

Signed-off-by: Kien Truong <duckientruong@gmail.com>
9 years agoSort the cgroup memory settings before applying.
Kien Truong [Sun, 5 Apr 2015 23:46:22 +0000 (23:46 +0000)]
Sort the cgroup memory settings before applying.

Add a function to sort the cgroup settings before applying.
Currently, the function will put memory.memsw.limit_in_bytes after
memory.limit_in_bytes setting so the container will start
regardless of the order specified in the input. Fix #453

Signed-off-by: Kien Truong <duckientruong@gmail.com>
9 years agooverlay: create workdir if it doesn't exist
Serge Hallyn [Fri, 1 May 2015 12:56:33 +0000 (14:56 +0200)]
overlay: create workdir if it doesn't exist

Otherwise a container created before we needed workdir will fail
to start after a kernel+lxc update.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
9 years agoFix lxc-net regression on missing restorecon
Stéphane Graber [Tue, 28 Apr 2015 07:01:40 +0000 (09:01 +0200)]
Fix lxc-net regression on missing restorecon

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoc/r: check for criu images in the checkpoint directory
Tycho Andersen [Fri, 24 Apr 2015 20:46:08 +0000 (14:46 -0600)]
c/r: check for criu images in the checkpoint directory

CRIU can get confused if there are two dumps that are written to the same
directory, so we make some minimal effort to prevent people from doing this.
This is a better alternative than forcing liblxc to create the directory, since
it is mostly race free (and neither solution is bullet proof anyway if someone
rsyncs some bad images over the top of the good ones).

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agolxc-net: Rework/cleanup
Stéphane Graber [Sat, 25 Apr 2015 21:06:30 +0000 (17:06 -0400)]
lxc-net: Rework/cleanup

This updates lxc-net with the following changes:
 - Better recover from crashes/partial runs
 - Better error detection and reporting
 - Less code duplication (use the stop code on crash)
 - Better state tracking
 - Allow for restart of all of lxc-net except for the bridge itself
 - Only support iproute from this point on (ifconfig's been deprecated
   for years)

V2: Use template variables everywhere

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoFix Lua 5.3 compatibility code.
Thomas Moschny [Sun, 26 Apr 2015 21:25:59 +0000 (23:25 +0200)]
Fix Lua 5.3 compatibility code.

If Lua 5.3 is compiled with LUA_COMPAT_5_2 defined, the
luaL_checkunsigned compatibility macro is already defined
in lauxlib.h.

Signed-off-by: Thomas Moschny <thomas.moschny@gmx.de>
9 years agoadded build and test results to .gitignore
Karl-Philipp Richter [Sat, 25 Apr 2015 11:06:00 +0000 (13:06 +0200)]
added build and test results to .gitignore

Signed-off-by: Karl-Philipp Richter <krichter722@aol.de>
9 years agoMake lxc-checkconfig work with kernel versions > 3
Christian Brauner [Sat, 25 Apr 2015 08:05:07 +0000 (10:05 +0200)]
Make lxc-checkconfig work with kernel versions > 3

(1) Add test for kernel version greater 3.
(2) Use && and || instead of -a and -o as suggested in
    http://www.unix.com/man-page/posix/1p/test/.

lxc-checkconfig will currently report "missing" on "Cgroup memory controller"
for kernel versions greater 3. This happens because the script, before checking
for the corresponding memory variable in the kernel config, currently will test
whether we have a major kernel version greater- or equal to 3 and a minor kernel
version greater- or equal to 6. This adds an additional test whether we have a
major kernel version greater than 3.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
9 years agolxc-alpine: create /dev/shm before mounting
Natanael Copa [Fri, 24 Apr 2015 08:26:40 +0000 (10:26 +0200)]
lxc-alpine: create /dev/shm before mounting

This is needed for lxc.autodev=1 to work.

Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoAdd IPv6 support to lxc-net
Stéphane Graber [Fri, 24 Apr 2015 02:39:48 +0000 (22:39 -0400)]
Add IPv6 support to lxc-net

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agouse poll instead of select
Serge Hallyn [Tue, 21 Apr 2015 18:34:45 +0000 (13:34 -0500)]
use poll instead of select

Particularly when using the go-lxc api with lots of threads, it
happens that if the open files limit is > 1024, we will try to
select on fd > 1024 which breaks on glibc.

So use poll instead of select.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agologs: introduce a thread-local 'current' lxc_config (v2)
Serge Hallyn [Tue, 21 Apr 2015 14:20:32 +0000 (09:20 -0500)]
logs: introduce a thread-local 'current' lxc_config (v2)

The logging code uses a global log_fd and log_level to direct
logging (ERROR(), etc).  While the container configuration file allows
for lxc.loglevel and lxc.logfile, those are only used at configuration
file read time to set the global variables.  This works ok in the
lxc front-end programs, but becomes a problem with threaded API users.

The simplest solution would be to not allow per-container configuration
files, but it'd be nice to avoid that.

Passing a logfd or lxc_conf into every ERROR/INFO/etc call is "possible",
but would be a huge complication as there are many functions, including
struct member functions and callbacks, which don't have that info and
would need to get it from somewhere.

So the approach I'm taking here is to say that all real container work
is done inside api calls, and therefore the API calls themselves can
set a thread-local variable indicating which log info to use.  If
unset, then use the global values.  The lxc-* programs, when called
with a '-o logfile' argument, set a global variable to indicate that
the user-specified value should be used.

In this patch:

If the lxc container configuration specifies a loglevel/logfile, only
set the lxc_config's logfd and loglevel according to those, not the
global values.

Each API call is wrapped to set/unset the current_config.  (The few
exceptions are calls which do not result in any log actions)

Update logfile appender to use the logfile specified in lxc_conf if (a)
current_config is set and (b) the lxc-* command did not override it.

Changelog (2015-04-21):
. always re-set current_config to NULL at end of an API
  call, rather than storing the previous value.  We don't
  nest API calls.
. remove the log_lock stuff which wasn't used
. lxc_conf_free: if the config is current_config, set
  current_config to NULL.  (It can't be another thread's
  current_config, or we wouldn't be freeing it)
. lxc_check_inherited: don't close fd if it is the
  current_config->logfd.  Note this is only called when
  starting a container, so we have no other threads at
  this point.

Changelog (2015-04-22)
. Unset the per-container logfd on destroy
.
. Do so before we rm the containerdir.  Otherwise if the logfile is set
. to $lxcpath/$name/log, the containerdir won't be fully deleted.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-busybox: add OpenSSH support
Bogdan Purcareata [Wed, 22 Apr 2015 14:53:32 +0000 (14:53 +0000)]
lxc-busybox: add OpenSSH support

Add an additional template parameter for SSH support in the container. Currently
this can be implemented using the Dropbear or OpenSSH utility. The respective
tool needs to be available on the host Linux.

If the parameter is omitted, the template will look for the Dropbear utility on
the host and install it if it is available (legacy behavior).

Adding OpenSSH support has been done following the model in the lxc-sshd
template.

Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoc/r: re-open fds after clone()
Tycho Andersen [Mon, 20 Apr 2015 23:34:31 +0000 (17:34 -0600)]
c/r: re-open fds after clone()

If we don't re-open these after clone, the init process has a pointer to the
parent's /dev/{zero,null}. CRIU seese these and wants to dump the parent's
mount namespace, which is unnecessary. Instead, we should just re-open
stdin/out/err after we do the clone and pivot root, to ensure that we have
pointers to the devcies in init's rootfs instead of the host's.

v2: Only close fds if the container was daemonized. This didn't turn out as
    nicely as described on the list because lxc_start() doesn't actually have
    the struct lxc_container, so it cant see the flag. Instead, we just pass it
    down everywhere.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoc/r: enable hugetlbfs in criu
Tycho Andersen [Mon, 20 Apr 2015 16:47:31 +0000 (10:47 -0600)]
c/r: enable hugetlbfs in criu

In vivid containers hugetlbfs is mounted, but it is not one of the hardcoded
fses in criu, so we need to tell criu that it is okay to automount it.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoc/r: check version of criu
Tycho Andersen [Mon, 20 Apr 2015 15:05:44 +0000 (09:05 -0600)]
c/r: check version of criu

Note that we allow both a tagged version or a git build that has sufficient
patches for the features we require.

v2: close criu's stderr too

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoc/r: move criu code to its own file
Tycho Andersen [Thu, 16 Apr 2015 18:40:56 +0000 (12:40 -0600)]
c/r: move criu code to its own file

Trying to cage the beast that is lxccontainer.c.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoc/r: use criu option instead of lxc-restore-net
Tycho Andersen [Mon, 13 Apr 2015 18:54:27 +0000 (18:54 +0000)]
c/r: use criu option instead of lxc-restore-net

As of criu 1.5, the --veth-pair argument supports an additional parameter that
is the bridge name to attach to. This enables us to get rid of the goofy
action-script hack that passed bridge names as environment variables.

This patch is on top of the systemd/lxcfs mount rework patch, as we probably
want to wait to use 1.5 options until it has been out for a while and is in
distros.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoc/r: rework external mountpoint handling v4
Tycho Andersen [Wed, 15 Apr 2015 19:43:28 +0000 (13:43 -0600)]
c/r: rework external mountpoint handling v4

CRIU now supports autodetection of external mounts via the --ext-mount-map auto
--enable-external-sharing --enable-external-masters options, so we don't need
to explicitly pass the cgmanager mount or any of the mounts from the config.
This also means that lxcfs mounts (since they are bind mounts from outside the
container) are autodetected, meaning that c/r of containers using lxcfs works.

A further advantage of this patch is that it addresses some of the ugliness
that was in the exec_criu() function. There are other criu options that will
allow us to trim this even further, though.

Finally, with --enable-external-masters, criu understands slave mounts in the
container with shared mounts in the peer group that are outside the namespace.
This allows containers on a systemd host to be dumped and restored correctly.

However, these options have just landed in criu trunk today, and the next
tagged release will be 1.6 on June 1, so we should avoid merging this into any
stable releases until then.

v2: remount / as private before bind mounting the container's directory for
    criu. The problem here is that if / is mounted as shared, even if we
    unshare() the /var/lib/lxc/rootfs mountpoint propagates outside of our
    mount namespace, which is bad, since we don't want to leak mounts. In
    particular, this leak confuses criu the second time it goes to checkpoint
    the container.

v3: whoops, we really want / as MS_SLAVE | MS_REC here, to match what start
    does

v4: rebase onto master for revert of logging patch

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoRevert (by hand) "logs: introduce a thread-local 'current' lxc_config"
Serge Hallyn [Tue, 14 Apr 2015 20:47:02 +0000 (15:47 -0500)]
Revert (by hand) "logs: introduce a thread-local 'current' lxc_config"

This is hopefully temporary - it works great for lxc itself, but seems
to be upsetting golang.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Tested-by: Tycho Andersen <tycho.andersen@canonical.com>
9 years agoRevert "lxc-cmd-stop: two fixes"
Serge Hallyn [Tue, 14 Apr 2015 19:56:51 +0000 (14:56 -0500)]
Revert "lxc-cmd-stop: two fixes"

This breaks code that depended on the monitor being fully dead before
c->stop() returns.

This reverts commit 62e041610609c8913c3d397a521716819a91f850.

9 years agoRevert "do_lxcap_stop: wait until container is stopped"
Serge Hallyn [Tue, 14 Apr 2015 19:56:10 +0000 (14:56 -0500)]
Revert "do_lxcap_stop: wait until container is stopped"

This breaks lxc-test-concurrent.

This reverts commit fef9aa89e99285609d51848623f84ecd3a3109df.

9 years agodo_lxcap_stop: wait until container is stopped
Serge Hallyn [Tue, 14 Apr 2015 14:28:20 +0000 (09:28 -0500)]
do_lxcap_stop: wait until container is stopped

In the past, lxc-cmd-stop would wait until the command pipe was closed
before returning, ensuring that the container monitor had exited.
Now that we accept the actual success return value, lxcapi_stop can
return success before the monitor has fully exited.

So explicitly wait for the container to stop, when lxc-cmd-stop returned
success.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
9 years agodon't compare unsigned values as negative ones
Tycho Andersen [Mon, 13 Apr 2015 22:43:30 +0000 (16:43 -0600)]
don't compare unsigned values as negative ones

Instead, check that the result is larger than its parts.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-fedora: manage secondary architectures
Laurent Vivier [Tue, 7 Apr 2015 19:17:37 +0000 (21:17 +0200)]
lxc-fedora: manage secondary architectures

URL for packages and LiveOS differs from x86, x86_64 and ARM.

This patch allows to select the good mirror URL according to
the architecture.

Primary architecture: http://mirrors.kernel.org/fedora
Secondary architecture: http://mirrors.kernel.org/fedora-secondary

The managed secondary architectures are only ppc64 and s390x,
the secondary architectures for Fedora 20 (the base of initial bootstrap).

Signed-off-by: Laurent Vivier <Laurent@Vivier.EU>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agofix dead code
Tycho Andersen [Mon, 13 Apr 2015 18:07:03 +0000 (18:07 +0000)]
fix dead code

We've already checked that c is not null above, so the false branch can never
be taken here.

Reported-by: Coverity
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agofix NULL dereference
Tycho Andersen [Mon, 13 Apr 2015 18:07:02 +0000 (18:07 +0000)]
fix NULL dereference

lxc_console dereferences C, so we should check that it is not null and fail if
it is.

Reported-by: Coverity
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoc/r: no double fclose() of mnts
Tycho Andersen [Mon, 13 Apr 2015 18:07:01 +0000 (18:07 +0000)]
c/r: no double fclose() of mnts

Reported-by: Coverity
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agofix integer overflow in setproctitle
Tycho Andersen [Mon, 13 Apr 2015 20:35:03 +0000 (14:35 -0600)]
fix integer overflow in setproctitle

1. don't cast to long
2. check overflow before addition

v2: just remove the cast, don't change the type of the variables

Reported-by: Coverity
Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-cmd-stop: two fixes
Serge Hallyn [Mon, 13 Apr 2015 21:19:47 +0000 (21:19 +0000)]
lxc-cmd-stop: two fixes

These are two fixes for long, long-standing bugs.

1. When we stop a container from the lxc_cmd stop handler, we kill its
init task, then we unfreeze the container to make sure it receives the
signal.  When that unfreeze succeeds, we were immediately returning 0,
without sending a response to the invoker.

2. lxc_cmd returns the length of the field received.  In the case of
an lxc_cmd_stop this is 16.  But a comment claims we expect no response,
only a 0.  In fact the handler does send a response, which may or may
not include an error.  So don't call an error just because we got back a
response.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoadd vim swap files to .gitignore
Tycho Andersen [Thu, 9 Apr 2015 21:59:20 +0000 (21:59 +0000)]
add vim swap files to .gitignore

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoc/r: populate clone flags on restore
Tycho Andersen [Thu, 9 Apr 2015 21:59:19 +0000 (21:59 +0000)]
c/r: populate clone flags on restore

Since attach asks the restore process what the clone flags were, if we forgot
to set them then the attach command ran in the hosts namespaces instead of the
containers, which is a Very Bad Thing :). Instead, we remember to set the clone
flags in the restore process' handler, so that we report them correctly to any
attach processes who ask.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoupdate path of tty.conf
teruo-oshida [Fri, 27 Mar 2015 09:04:31 +0000 (18:04 +0900)]
update path of tty.conf

$container_rootfs may not be used so 'sed' will try to patch
"/etc/init/tty.conf". It must not be correct.

Signed-off-by: Teruo Oshida <teruo.oshida@miraclelinux.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoReally fix Android...
Stéphane Graber [Mon, 6 Apr 2015 23:02:40 +0000 (19:02 -0400)]
Really fix Android...

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoFix Android build because of getmntent_r
Stéphane Graber [Mon, 6 Apr 2015 21:58:44 +0000 (17:58 -0400)]
Fix Android build because of getmntent_r

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoc/r: tell CRIU about all external mounts in the config
Tycho Andersen [Thu, 26 Mar 2015 21:36:53 +0000 (15:36 -0600)]
c/r: tell CRIU about all external mounts in the config

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoUse SYSERROR instead of perror
Tycho Andersen [Fri, 3 Apr 2015 21:17:26 +0000 (21:17 +0000)]
Use SYSERROR instead of perror

It is impolite to print stuff to stderror owned by other people, and they might
miss it anyway since it's not in the normal log location.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agodon't hang on some errors in do_restore
Tycho Andersen [Fri, 3 Apr 2015 21:17:25 +0000 (21:17 +0000)]
don't hang on some errors in do_restore

Instead, the parent always writes a status to the pipe.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agolxcapi_restore shouldn't steal the calling process
Tycho Andersen [Fri, 20 Mar 2015 16:17:31 +0000 (10:17 -0600)]
lxcapi_restore shouldn't steal the calling process

Previously, lxcapi_restore used the calling process as the lxc monitor process
(and just never returned), requiring users to fork before calling it. This, of
course, would cause problems for things like LXD, which can't fork.

Now, restore() forks the monitor as a child of the process that calls it. Users
who want to daemonize the restore process need to fork themselves.
lxc-checkpoint has been updated to reflect this behavior change.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoFix incomplete destruction of unprivileged ephemeral containers
Stéphane Graber [Mon, 6 Apr 2015 16:11:25 +0000 (12:11 -0400)]
Fix incomplete destruction of unprivileged ephemeral containers

If an unprivileged ephemeral container is started as follows,

    lxc-start-ephemeral -o trusty -n test_ephemeral

Then an empty directory remains upon exit from the container,

    ~/.local/share/lxc/test_ephemeral/tmpfs/delta0

(The tmpfs filesystem is successfully unmounted, but we seem to lack
permission to delete the delta0 directory).

This issue arose following commits 4799a1e and dd2271e .

The following patch resolves the issue. It has been tested on ubuntu
14.04 with the lxc-daily ppa.
Since gmail screws up the formatting of the patch via line-wrapping
etc, please copy the patch from the issue-tracker rather than from
this email.

Signed-off by: Oleg Freedholm <overlayfs@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agolxc-test-apparmor: flush the pipe before exiting child
Serge Hallyn [Fri, 3 Apr 2015 23:40:49 +0000 (23:40 +0000)]
lxc-test-apparmor: flush the pipe before exiting child

to make sure the parent's read returns.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agoAdd the use of 'attach' to lxc-start-ephemeral(1)
KATOH Yasufumi [Wed, 1 Apr 2015 16:56:03 +0000 (01:56 +0900)]
Add the use of 'attach' to lxc-start-ephemeral(1)

Update for commit 8158c05

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agodoc: Add '--storage-type' option to lxc-start-ephemeral(1)
KATOH Yasufumi [Fri, 27 Mar 2015 09:32:05 +0000 (18:32 +0900)]
doc: Add '--storage-type' option to lxc-start-ephemeral(1)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoc/r: teach criu about cgmanager's socket
Tycho Andersen [Thu, 26 Mar 2015 15:52:32 +0000 (15:52 +0000)]
c/r: teach criu about cgmanager's socket

CRIU needs to be told when something is bind mounted into the container from
the outside as cgmanager's socket is.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agoconcurrent: check realloc() rc and exit on failure
Arjun Sreedharan [Wed, 1 Apr 2015 19:06:48 +0000 (00:36 +0530)]
concurrent: check realloc() rc and exit on failure

Signed-off-by: Arjun Sreedharan <arjun024@gmail.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
9 years agolxc-destroy: actually work if underlying fs is overlayfs
Serge Hallyn [Mon, 16 Mar 2015 17:02:12 +0000 (17:02 +0000)]
lxc-destroy: actually work if underlying fs is overlayfs

One of the 'features' of overlayfs is that depending on whether a file
is on the upper or lower dir you get back a different device from stat.
That breaks our lxc_rmdir_onedev.

So at lxc_rmdir_ondev check the device of the directory being deleted.
If it is overlayfs, then skip the device check.

Note this is unrelated to overlayfs snapshots - in those cases when you
delete a container, /var/lib/lxc/$container/ does not actually have an
overlayfs under it.  Rather, to reproduce this you would

sudo mkdir /opt/{lower,upper,workdir}
sudo mount -t overlayfs -o lower=/opt/lower,upper=/opt/upper,workdir=/opt/workdir \
lxc /var/lib/lxc
sudo lxc-create -t download -n c1 -- -d ubuntu -r trusty -a amd64
sudo lxc-destroy -n c1

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Tested-by: Marko Ratkaj <marko.ratkaj@sartura.hr>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agocgmanager: free line at end of check_supports_multiple_controllers
Serge Hallyn [Wed, 18 Mar 2015 00:02:19 +0000 (19:02 -0500)]
cgmanager: free line at end of check_supports_multiple_controllers

This is only called at startup so it wasn't a big leak, but it is a leak.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
9 years agocgmanager: put unprivileged containers under $(curcgroup)/lxc/$(container0
Serge Hallyn [Wed, 18 Mar 2015 00:02:18 +0000 (19:02 -0500)]
cgmanager: put unprivileged containers under $(curcgroup)/lxc/$(container0

Currently if we are in /user.slice/user-1000.slice/session-c2.scope,
and we start an unprivileged container t1, it will be in cgroup
3:memory:/user.slice/user-1000.slice/session-c2.scope/t1.  If
we then do a 'lxc-cgroup -n t1 freezer.tasks', cgm_get will
first switch to 3:memory:/user.slice/user-1000.slice/session-c2.scope
then look up 't1's values.  The reasons for this are

1. cgmanager get_value is relative to your own cgroup, so we need
to be sure to be in t1's cgroup or an ancestor
2. we don't want to be in the container's cgroup bc it might freeze us.

But in Ubuntu 15.04 it was decided that
3:memory:/user.slice/user-1000.slice/session-c2.scope/tasks should
not be writeable by the user, making this fail.

Therefore put all unprivileged cgroups under "lxc/%n".  That way
the "lxc" cgroup should always be owned by the user so that he can
enter.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>