]> git.ipfire.org Git - thirdparty/lxc.git/log
thirdparty/lxc.git
7 years agoRevert "rsync: add new rsync functions"
Christian Brauner [Tue, 15 Aug 2017 16:10:19 +0000 (18:10 +0200)] 
Revert "rsync: add new rsync functions"

This reverts commit 2ea2f3c8a6509cddbeebab92a0d3c56d4bf48be9.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
7 years agoRevert "storage: switch to new rsync functions"
Christian Brauner [Tue, 15 Aug 2017 16:07:56 +0000 (18:07 +0200)] 
Revert "storage: switch to new rsync functions"

This reverts commit a493a694166e65edbf412433a605042cc0ac3d0e.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
7 years agoRevert "btrfs: switch to new rsync helpers"
Christian Brauner [Tue, 15 Aug 2017 16:06:42 +0000 (18:06 +0200)] 
Revert "btrfs: switch to new rsync helpers"

This reverts commit d8bb582ae3ffd1864f20bd0a9548b2a06ded66c0.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
7 years agoRevert "loop: rework loop storage driver"
Christian Brauner [Tue, 15 Aug 2017 16:06:23 +0000 (18:06 +0200)] 
Revert "loop: rework loop storage driver"

This reverts commit 85914b6775afbf5598ea0cf8e342237f1da7c6d4.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
7 years agoRevert "rbd: rbd non-functional changes"
Christian Brauner [Tue, 15 Aug 2017 16:06:07 +0000 (18:06 +0200)] 
Revert "rbd: rbd non-functional changes"

This reverts commit 162a857a5811ff343146401cf6dde482158ae665.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
7 years agoRevert "rbd: rework rbd storage driver"
Christian Brauner [Tue, 15 Aug 2017 16:05:42 +0000 (18:05 +0200)] 
Revert "rbd: rework rbd storage driver"

This reverts commit 93b8f59a889d72b863c9fd225ebe3694feb6a0d1.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agorbd: rework rbd storage driver
Christian Brauner [Mon, 24 Jul 2017 22:13:57 +0000 (00:13 +0200)] 
rbd: rework rbd storage driver

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agorbd: rbd non-functional changes
Christian Brauner [Mon, 24 Jul 2017 21:53:02 +0000 (23:53 +0200)] 
rbd: rbd non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoloop: rework loop storage driver
Christian Brauner [Mon, 24 Jul 2017 20:58:19 +0000 (22:58 +0200)] 
loop: rework loop storage driver

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: switch to new rsync helpers
Christian Brauner [Tue, 25 Jul 2017 18:55:10 +0000 (20:55 +0200)] 
btrfs: switch to new rsync helpers

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: switch to new rsync functions
Christian Brauner [Mon, 24 Jul 2017 15:49:03 +0000 (17:49 +0200)] 
storage: switch to new rsync functions

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agorsync: add new rsync functions
Christian Brauner [Mon, 24 Jul 2017 15:47:22 +0000 (17:47 +0200)] 
rsync: add new rsync functions

We will fade out the old helpers soon.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobdev: non-functional changes
Christian Brauner [Mon, 24 Jul 2017 15:03:32 +0000 (17:03 +0200)] 
bdev: non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agodir: improvements
Christian Brauner [Mon, 24 Jul 2017 14:32:10 +0000 (16:32 +0200)] 
dir: improvements

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agodir: non-functional changes
Christian Brauner [Mon, 24 Jul 2017 14:29:18 +0000 (16:29 +0200)] 
dir: non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: rework lvm backend
Christian Brauner [Wed, 19 Jul 2017 00:24:17 +0000 (02:24 +0200)] 
storage: rework lvm backend

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: add arg to create_snapshot()
Christian Brauner [Wed, 19 Jul 2017 00:23:55 +0000 (02:23 +0200)] 
storage: add arg to create_snapshot()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: switch to btrfs_create_{clone,snapshot}()
Christian Brauner [Sun, 16 Jul 2017 22:02:14 +0000 (00:02 +0200)] 
btrfs: switch to btrfs_create_{clone,snapshot}()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: add create_{clone,snapshot}()
Christian Brauner [Sun, 16 Jul 2017 22:01:46 +0000 (00:01 +0200)] 
storage: add create_{clone,snapshot}()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: simplify
Christian Brauner [Sun, 16 Jul 2017 20:58:47 +0000 (22:58 +0200)] 
btrfs: simplify

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: simplify
Christian Brauner [Sun, 16 Jul 2017 20:49:45 +0000 (22:49 +0200)] 
btrfs: simplify

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: only chown_mapped_root() if not btrfs
Christian Brauner [Sun, 16 Jul 2017 20:36:01 +0000 (22:36 +0200)] 
btrfs: only chown_mapped_root() if not btrfs

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: non-functional changes
Christian Brauner [Sun, 16 Jul 2017 20:35:50 +0000 (22:35 +0200)] 
btrfs: non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: enable unprivileged snapshots
Christian Brauner [Sun, 16 Jul 2017 15:57:06 +0000 (17:57 +0200)] 
btrfs: enable unprivileged snapshots

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: export btrfs_snapshot_wrapper()
Christian Brauner [Sun, 16 Jul 2017 15:56:29 +0000 (17:56 +0200)] 
btrfs: export btrfs_snapshot_wrapper()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: non-functional changes
Christian Brauner [Sun, 16 Jul 2017 15:54:39 +0000 (17:54 +0200)] 
btrfs: non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agotools: remove empty snap directory
Christian Brauner [Sat, 15 Jul 2017 20:50:15 +0000 (22:50 +0200)] 
tools: remove empty snap directory

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agooverlay: simplify and adapt to "overlay"
Christian Brauner [Sat, 15 Jul 2017 19:49:44 +0000 (21:49 +0200)] 
overlay: simplify and adapt to "overlay"

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agolvm: non-functional changes
Christian Brauner [Sat, 15 Jul 2017 19:02:15 +0000 (21:02 +0200)] 
lvm: non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agobtrfs: simplify + bugfix
Christian Brauner [Sat, 15 Jul 2017 13:34:39 +0000 (15:34 +0200)] 
btrfs: simplify + bugfix

Closes #1698.
Closes #1703.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agolxccontainer: use snprintf()
Christian Brauner [Sat, 15 Jul 2017 13:34:21 +0000 (15:34 +0200)] 
lxccontainer: use snprintf()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: default to orig type on identical paths
Christian Brauner [Sat, 15 Jul 2017 13:32:52 +0000 (15:32 +0200)] 
storage: default to orig type on identical paths

otherwise default to "dir"

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoUse "rsync -SHaAX" to copy the cached rootfs into place
Harald Dunkel [Fri, 28 Jul 2017 18:08:02 +0000 (13:08 -0500)] 
Use "rsync -SHaAX" to copy the cached rootfs into place

(updated by Serge to also handle hte new lxc-fedora{-legacy{.in
templates)

Signed-off-by: Harald Dunkel <harri@afaics.de>
Signed-off-by: Serge Hallyn <serge@hallyn.com>
Acked-by: Serge Hallyn <serge@hallyn.com>
8 years agolvm: fix check
Christian Brauner [Fri, 28 Jul 2017 13:33:50 +0000 (15:33 +0200)] 
lvm: fix check

Signed-off-by: Thomas Hipp <thipp@suse.de>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agocgroups: use tight scoping
Christian Brauner [Fri, 28 Jul 2017 04:17:28 +0000 (06:17 +0200)] 
cgroups: use tight scoping

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agolvm: check whether lxc.bdev.lvm.vg is set
Christian Brauner [Fri, 28 Jul 2017 04:17:01 +0000 (06:17 +0200)] 
lvm: check whether lxc.bdev.lvm.vg is set

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agocgroups: handle hybrid cgroup layouts
Christian Brauner [Wed, 26 Jul 2017 13:15:27 +0000 (15:15 +0200)] 
cgroups: handle hybrid cgroup layouts

Closes #1669.
Closes #1678.
Relates to https://github.com/systemd/systemd/issues/6408.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoutils: move helpers from cgfsng.c to utils.{c,h}
Christian Brauner [Wed, 26 Jul 2017 12:57:35 +0000 (14:57 +0200)] 
utils: move helpers from cgfsng.c to utils.{c,h}

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostart: lxc_setup() after unshare(CLONE_NEWCGROUP)
Christian Brauner [Thu, 1 Jun 2017 03:23:12 +0000 (05:23 +0200)] 
start: lxc_setup() after unshare(CLONE_NEWCGROUP)

When the running kernel supports cgroup namespaces and users want to manually
set up cgroups via lxc.hook.mount before the init binary starts the cgroup
namespace needs to be already unshared. Otherwise the view on the cgroup mounts
is wrong. This commit places the call to lxc_setup() after the
LXC_SYNC_POST_CGROUP barrier.

Before this commit, the tty fds we allocate from a fresh devpts instance in the
container's namespaces before the init binary starts were referring to the
host's cgroup namespace since lxc_setup() was called before
unshare(CLONE_NEWCGROUP). Although not a security risk at this point since
setns() restricts its calls to /proc/<self>/ns files it's still better to do it
*after* the cgroup namespace has been unshared.

Adding a Suggested-by line for the lxc.mount.hook fix for Quentin.

Closes #1597.

Suggested-by: Quentin Dufour <quentin@dufour.tk>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years ago Using 'add-required_remount_flags' function to add required flags
Li Feng [Mon, 24 Jul 2017 08:26:52 +0000 (16:26 +0800)] 
 Using 'add-required_remount_flags' function to add required flags

Signed-off-by: Li Feng <lifeng68@huawei.com>
8 years agoAdd test script to test the ro option of lxc.rootfs.options
Li Feng [Tue, 18 Jul 2017 10:31:35 +0000 (18:31 +0800)] 
Add test script to test the ro option of lxc.rootfs.options

Signed-off-by: Li Feng <lifeng68@huawei.com>
8 years agoFix issue #1702, do remount with the MS_REMOUNT flag when mounts with MS_RDONLY
Li Feng [Mon, 17 Jul 2017 09:09:16 +0000 (17:09 +0800)] 
Fix issue #1702, do remount with the MS_REMOUNT flag when mounts with MS_RDONLY

Signed-off-by: Li Feng <lifeng68@huawei.com>
8 years agoFix syntax error in lxc-download
Stéphane Graber [Tue, 11 Jul 2017 06:58:56 +0000 (02:58 -0400)] 
Fix syntax error in lxc-download

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
8 years agoSanitize lxc-download script with shellcheck
William Gathoye [Wed, 3 May 2017 09:59:18 +0000 (11:59 +0200)] 
Sanitize lxc-download script with shellcheck

Fix potential CVE when using spaces in LXC names

Signed-off-by: William Gathoye <william@gathoye.be>
8 years agotests: remove the temp container directory
Long Wang [Wed, 5 Jul 2017 07:17:58 +0000 (15:17 +0800)] 
tests: remove the temp container directory

c->destory() will not remove the temp container directory.
This patch fix that.

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agofix some cppcheck warnings
0x0916 [Sun, 2 Jul 2017 11:12:05 +0000 (19:12 +0800)] 
fix some cppcheck warnings

use cppcheck tools `cppcheck --enable=warning  .` on lxc source directory.

This patch fix the following warnning

```
[src/lxc/cgroups/cgfs.c:794]: (warning) %ld in format string (no. 3) requires 'long' but the argument type is 'unsigned long'.
[src/lxc/confile.c:4441]: (warning) %d in format string (no. 2) requires 'int' but the argument type is 'unsigned int'.
[src/lxc/confile.c:4502]: (warning) %d in format string (no. 2) requires 'int' but the argument type is 'unsigned int'.
[src/lxc/confile_legacy.c:921]: (warning) %d in format string (no. 2) requires 'int' but the argument type is 'unsigned int'.
[src/lxc/confile_legacy.c:938]: (warning) %d in format string (no. 2) requires 'int' but the argument type is 'unsigned int'.
[src/lxc/lxclock.c:63]: (warning) %zd in format string (no. 1) requires 'ssize_t' but the argument type is 'size_t {aka unsigned long}'.
[src/lxc/tools/lxc_info.c:118]: (warning) %u in format string (no. 1) requires 'unsigned int' but the argument type is 'signed int'.
[src/lxc/tools/lxc_info.c:118]: (warning) %u in format string (no. 2) requires 'unsigned int' but the argument type is 'signed int'.
[src/lxc/tools/lxc_info.c:123]: (warning) %u in format string (no. 1) requires 'unsigned int' but the argument type is 'signed int'.
[src/lxc/tools/lxc_info.c:127]: (warning) %u in format string (no. 1) requires 'unsigned int' but the argument type is 'signed int'.
[src/lxc/tools/lxc_info.c:130]: (warning) %u in format string (no. 1) requires 'unsigned int' but the argument type is 'signed int'.
[src/lxc/tools/lxc_top.c:212]: (warning) %u in format string (no. 1) requires 'unsigned int' but the argument type is 'signed int'.
[src/lxc/tools/lxc_top.c:212]: (warning) %u in format string (no. 2) requires 'unsigned int' but the argument type is 'signed int'.
[src/lxc/tools/lxc_top.c:217]: (warning) %u in format string (no. 1) requires 'unsigned int' but the argument type is 'signed int'.
[src/lxc/tools/lxc_top.c:221]: (warning) %u in format string (no. 1) requires 'unsigned int' but the argument type is 'signed int'.
[src/lxc/tools/lxc_top.c:224]: (warning) %u in format string (no. 1) requires 'unsigned int' but the argument type is 'signed int'.
```

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agostorage: handle prefixed rootfs paths
Christian Brauner [Sat, 1 Jul 2017 23:44:25 +0000 (01:44 +0200)] 
storage: handle prefixed rootfs paths

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: prefix all zfs paths
Christian Brauner [Sat, 1 Jul 2017 21:41:49 +0000 (23:41 +0200)] 
storage: prefix all zfs paths

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: prefix all rbd paths
Christian Brauner [Sat, 1 Jul 2017 21:35:58 +0000 (23:35 +0200)] 
storage: prefix all rbd paths

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: prefix all nbd paths
Christian Brauner [Sat, 1 Jul 2017 21:33:18 +0000 (23:33 +0200)] 
storage: prefix all nbd paths

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: prefix all lvm paths
Christian Brauner [Sat, 1 Jul 2017 21:31:18 +0000 (23:31 +0200)] 
storage: prefix all lvm paths

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: prefix all btrfs paths
Christian Brauner [Sat, 1 Jul 2017 21:02:45 +0000 (23:02 +0200)] 
storage: prefix all btrfs paths

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: prefix all dir paths
Christian Brauner [Sat, 1 Jul 2017 20:36:27 +0000 (22:36 +0200)] 
storage: prefix all dir paths

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: add lxc_storage_get_path()
Christian Brauner [Sat, 1 Jul 2017 20:36:05 +0000 (22:36 +0200)] 
storage: add lxc_storage_get_path()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostorage: add storage_utils.{c.h}
Christian Brauner [Sat, 1 Jul 2017 16:15:59 +0000 (18:15 +0200)] 
storage: add storage_utils.{c.h}

non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agotestcase: define a network before checks
0x0916 [Wed, 28 Jun 2017 23:32:54 +0000 (07:32 +0800)] 
testcase: define a network before checks

Signed-off-by: 0x0916 <w@laoqinren.net>
8 years agoconfile: free netdev->downscript
0x0916 [Tue, 27 Jun 2017 14:12:38 +0000 (22:12 +0800)] 
confile: free netdev->downscript

Signed-off-by: 0x0916 <w@laoqinren.net>
8 years agocgroups: workaround gcc-7 bug
Christian Brauner [Thu, 27 Jul 2017 18:49:58 +0000 (20:49 +0200)] 
cgroups: workaround gcc-7 bug

Also: LOL

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agodoc: Untabify Japanese lxc.container.conf(5)
KATOH Yasufumi [Tue, 20 Jun 2017 08:36:30 +0000 (17:36 +0900)] 
doc: Untabify Japanese lxc.container.conf(5)

Tab and white space is mixed in Japanese lxc.container.conf(5), so
unify into the white space.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
8 years agoMerge pull request #1707 from brauner/2017-07-17/additional_stable_cherry_picks
Stéphane Graber [Mon, 17 Jul 2017 14:15:22 +0000 (16:15 +0200)] 
Merge pull request #1707 from brauner/2017-07-17/additional_stable_cherry_picks

stable-2.0: bugfixes

8 years agoconfile: clear vlan id 1707/head
Christian Brauner [Mon, 17 Jul 2017 11:34:20 +0000 (13:34 +0200)] 
confile: clear vlan id

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoconfile: clear macvlan mode
Christian Brauner [Mon, 17 Jul 2017 11:33:03 +0000 (13:33 +0200)] 
confile: clear macvlan mode

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoconfile: clear network flags
Christian Brauner [Mon, 17 Jul 2017 11:30:41 +0000 (13:30 +0200)] 
confile: clear network flags

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoconfile: clear ipv{4,6} gateway
Christian Brauner [Mon, 17 Jul 2017 11:21:15 +0000 (13:21 +0200)] 
confile: clear ipv{4,6} gateway

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agocgfsng: only output debug info when we set cgroup data
Long Wang [Mon, 10 Jul 2017 03:38:33 +0000 (11:38 +0800)] 
cgfsng: only output debug info when we set cgroup data

Only output debug info `cgroup 'xxxx' set to 'yyyy'` when we set
cgroup data.

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agoutils: set_stdfds()
Christian Brauner [Mon, 10 Jul 2017 09:46:54 +0000 (11:46 +0200)] 
utils: set_stdfds()

non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostart: dup std{in,out,err} to pty slave
Li Feng [Mon, 10 Jul 2017 09:19:52 +0000 (17:19 +0800)] 
start: dup std{in,out,err} to pty slave

In the case the container has a console with a valid slave pty file descriptor
we duplicate std{in,out,err} to the slave file descriptor so console logging
works correctly. When the container does not have a valid slave pty file
descriptor for its console and is started daemonized we should dup to
/dev/null.

Closes #1646.

Signed-off-by: Li Feng <lifeng68@huawei.com>
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoutils: use access instead of stat
Long Wang [Sun, 9 Jul 2017 00:34:27 +0000 (08:34 +0800)] 
utils: use access instead of stat

we shoud test whether the file exists and grants
execute permissions.

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agocommonds: fix typo
Long Wang [Sun, 9 Jul 2017 00:10:34 +0000 (08:10 +0800)] 
commonds: fix typo

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agocommands: delete meaningless comments
Long Wang [Sun, 9 Jul 2017 00:08:54 +0000 (08:08 +0800)] 
commands: delete meaningless comments

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agocommands: handle EINTR
Christian Brauner [Tue, 4 Jul 2017 17:16:08 +0000 (19:16 +0200)] 
commands: handle EINTR

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agocommands: abstract cmd socket handling + logging
Christian Brauner [Mon, 3 Jul 2017 21:43:56 +0000 (23:43 +0200)] 
commands: abstract cmd socket handling + logging

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agocommands: add missing translation
Christian Brauner [Mon, 3 Jul 2017 21:37:31 +0000 (23:37 +0200)] 
commands: add missing translation

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agocommands: mv lxc_make_abstract_socket_name()
Christian Brauner [Mon, 3 Jul 2017 21:31:04 +0000 (23:31 +0200)] 
commands: mv lxc_make_abstract_socket_name()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agocommands: make state server interface flexible
Christian Brauner [Sun, 2 Jul 2017 13:42:07 +0000 (15:42 +0200)] 
commands: make state server interface flexible

This adds a little more flexibility to the state server. The idea is to have a
command socket function "lxc_cmd_add_state_client()" whose only task is to add
a new state client to the container's in-memory handler. This function returns
either the state of the container if it is already in the requested state or it
will return the newly registered client's fd in one of its arguments to the
caller. We then provide a separate helper function "lxc_cmd_sock_rcv_state()"
which can be passed the returned client fd and listens on the fd for the
requested state.
This is useful when we want to first register a client, then send a signal to
the container and wait for a state. This ensure that the client fd is
registered before the signal can have any effect and can e.g. be used to catch
something like the "STOPPING" state that is very ephemeral.

Additionally we provide a convenience function "lxc_cmd_sock_get_state()" which
combines both tasks and is used in e.g. "lxc_wait()".

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agocommands: rename to lxc_cmd_add_state_client()
Christian Brauner [Sun, 2 Jul 2017 12:47:02 +0000 (14:47 +0200)] 
commands: rename to lxc_cmd_add_state_client()

The new wait commands API is not yet stable so this change is ok.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agolxc static init: report exec*() failure
Christian Brauner [Fri, 30 Jun 2017 13:30:18 +0000 (15:30 +0200)] 
lxc static init: report exec*() failure

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agotest: shortlived daemonized containers
Christian Brauner [Thu, 29 Jun 2017 13:01:11 +0000 (15:01 +0200)] 
test: shortlived daemonized containers

Add a test to see if we can start daemonized containers that have a very
short-lived init process. The point of this is to see whether we can correctly
retrieve the state.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agolxccontainer: non-functional changes
Christian Brauner [Thu, 29 Jun 2017 18:53:07 +0000 (20:53 +0200)] 
lxccontainer: non-functional changes

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agolxccontainer: make sure memory is free()ed
Christian Brauner [Thu, 29 Jun 2017 18:49:56 +0000 (20:49 +0200)] 
lxccontainer: make sure memory is free()ed

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostart: use separate socket on daemonized start
Christian Brauner [Thu, 29 Jun 2017 10:16:00 +0000 (12:16 +0200)] 
start: use separate socket on daemonized start

Since we killed lxc-monitord we rely on the container's command socket to wait
for the container. This doesn't work nicely on daemonized startup since a
container's init process might be something that is so short-lived that we
won't even be able to add a state client before the mainloop closes. But the
container might still have been RUNNING and executed the init binary correctly.
In this case we would erroneously report that the container failed to start
when it actually started just fine.
This commit ensures that we really all cases where the container successfully
ran by switching to a short-lived per-container anonymous unix socket pair that
uses credentials to pass container states around. It is immediately closed once
the container has started successfully.
This should also make daemonized container start way more robust since we don't
rely on the command socket handler to be running.

For the experienced developer: Yes, I did think about utilizing the command
socket directly for this. The problem is that when the mainloop starts it may
end up end accept()ing the connection that we want
do_wait_on_daemonized_start() to accept() so this won't work and might cause us
to hang indefinitely. The same problem arises when the container fails to start
before the mainloop is created. In this case we would hang indefinitely as
well.

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agostart: generalize lxc_check_inherited()
Christian Brauner [Wed, 28 Jun 2017 11:30:05 +0000 (13:30 +0200)] 
start: generalize lxc_check_inherited()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoutils: lxc_make_abstract_socket_name()
Christian Brauner [Wed, 28 Jun 2017 22:50:19 +0000 (00:50 +0200)] 
utils: lxc_make_abstract_socket_name()

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoutils: close parent end in child process after fork
Long Wang [Sat, 8 Jul 2017 05:27:16 +0000 (13:27 +0800)] 
utils: close parent end in child process after fork

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agolxc_abstract_unix_connect: remove the workaround-code
Long Wang [Sat, 8 Jul 2017 02:48:15 +0000 (10:48 +0800)] 
lxc_abstract_unix_connect: remove the workaround-code

commit bdb3f44147bc1a55a97131b4b39d42844ae4fb9e says that we may undo
the change in august 2014.

I think that it is time to do that.

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agostate: remove lxc_rmstate declaration
Long Wang [Sat, 8 Jul 2017 02:40:41 +0000 (10:40 +0800)] 
state: remove lxc_rmstate declaration

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agoaf_unix: remove unlink operation
Long Wang [Sat, 8 Jul 2017 02:29:57 +0000 (10:29 +0800)] 
af_unix: remove unlink operation

It is not necessary to unlink the abstract socket pathname when
we have finished using the socket. The abstract name is automatically
removed when the socket is closed.

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agoAllow containers to start in AppArmor namespaces
Frédéric Dalleau [Fri, 7 Jul 2017 09:26:45 +0000 (11:26 +0200)] 
Allow containers to start in AppArmor namespaces

This patch allows users to start containers in AppArmor namespaces.
Users can define their own profiles for their containers, but
lxc-start must be allowed to change to a namespace.

A container configuration file can wrap a container in an AppArmor
profile using lxc.aa_profile.

A process in an AppArmor namespace is restricted to view
or manage only the profiles belonging to this namespace, as if no
other profiles existed. A namespace can be created as follow:
sudo mkdir /sys/kernel/security/apparmor/policy/namespaces/$NAMESPACE

AppArmor can stack profiles so that the contained process is bound
by the intersection of all profiles of the stack. This is achieved
using the '//&' operator as follow:

lxc.aa_profile = $PROFILE//&:$NAMESPACE://unconfined

In this case, even the guest process appears unconfined in the
namespace, it is still confined by $PROFILE.

A guest allowed to access "/sys/kernel/security/apparmor/** rwklix,"
will be able to manage its own profile set, while still being
enclosed in the topmost profile $PROFILE:

Different guests can be assigned the same namespace or different
namespaces. In the first case, they will share their profiles.
In the second case, they will have distinct sets of profiles.

This is validated on privileged containers.

Signed-off-by: Frédéric Dalleau <frederic.dalleau@collabora.com>
8 years agouse same ifndef/define format for all headers
Long Wang [Wed, 5 Jul 2017 04:20:28 +0000 (12:20 +0800)] 
use same ifndef/define format for all headers

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agocaps.h: move ifndef/define to the top
Long Wang [Wed, 5 Jul 2017 04:19:37 +0000 (12:19 +0800)] 
caps.h: move ifndef/define to the top

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agolxc-init: move initialization of act to outside of the loop
Long Wang [Wed, 5 Jul 2017 04:01:16 +0000 (12:01 +0800)] 
lxc-init: move initialization of act to outside of the loop

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agolxc-init: adjust include statements
Long Wang [Wed, 5 Jul 2017 03:54:25 +0000 (11:54 +0800)] 
lxc-init: adjust include statements

* Use `#include <lxc/lxccontaienr.h>` style for exported haeders.
* remove used header `caps.h`

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agolxc-init: non-functional changes
Long Wang [Wed, 5 Jul 2017 02:57:14 +0000 (10:57 +0800)] 
lxc-init: non-functional changes

This patch mainly update the message format to:

* upper the first letter
* end without a dot

all changes are relate to `lxc-init`

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agolxc-init: add comment for exclude 32 and 33 signals
Long Wang [Wed, 5 Jul 2017 02:53:02 +0000 (10:53 +0800)] 
lxc-init: add comment for exclude 32 and 33 signals

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agolxc-execute: print error message when failed
Long Wang [Tue, 4 Jul 2017 08:16:30 +0000 (16:16 +0800)] 
lxc-execute: print error message when failed

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agoREADME: update
Christian Brauner [Mon, 3 Jul 2017 22:15:05 +0000 (00:15 +0200)] 
README: update

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agoREADME: add CII Best Practices badge to README
Christian Brauner [Mon, 3 Jul 2017 18:39:59 +0000 (20:39 +0200)] 
README: add CII Best Practices badge to README

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
8 years agolxclock: non-functional changes
Long Wang [Mon, 3 Jul 2017 07:43:34 +0000 (15:43 +0800)] 
lxclock: non-functional changes

This patch mainly updates comments based on the current code.

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agolxclock: return the right error when open lock file failed
Long Wang [Mon, 3 Jul 2017 07:41:25 +0000 (15:41 +0800)] 
lxclock: return the right error when open lock file failed

Signed-off-by: Long Wang <w@laoqinren.net>
8 years agoremove the unused macro
0x0916 [Sun, 2 Jul 2017 11:45:41 +0000 (19:45 +0800)] 
remove the unused macro

Signed-off-by: Long Wang <w@laoqinren.net>