Commit Graph

3242 Commits

Author SHA1 Message Date
Serge Hallyn
7b7d76e00b 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>
2015-04-06 12:12:10 -04:00
Serge Hallyn
89a4ec737e 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>
2015-04-06 12:12:10 -04:00
Serge Hallyn
42e56013ea logs: introduce a thread-local 'current' lxc_config
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.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-04-06 12:12:10 -04:00
Stéphane Graber
0dbb4b2d3d Merge pull request #469 from fajarnugraha/usernet-20150317
Allow veth that is not attached to a bridge on unprivileged container
2015-04-06 10:53:44 -04:00
Stéphane Graber
51eba2ce15 Merge pull request #465 from bostjan/bugfix/autostart-order-reverse
autostart: Fix bug with containers being started in reverse order
2015-04-06 10:50:16 -04:00
Stéphane Graber
b2937903a0 Merge pull request #480 from aletourneau/centos.releasever
Added a more reliable test for yum --releasever in the centos template
2015-04-01 18:31:24 -04:00
Alexandre Létourneau
85ccd3d569 Now including grep -q
Signed-off-by: Alexandre Letourneau <letourneau.alexandre@gmail.com>
2015-04-01 18:22:54 -04:00
Alexandre Létourneau
87a92d42ce Added a more reliable test for yum --releasever in the centos template
Signed-off-by: Alexandre Létourneau <letourneau.alexandre@gmail.com>
2015-03-30 18:25:42 -04:00
Stéphane Graber
240da43051 Merge pull request #452 from achton/master
Correct typo.
2015-03-30 14:58:37 -04:00
Achton
ffe25ef822 Correct typo.
Signed-off-by: Achton Smidt Winther <mail@achton.net>
2015-03-30 20:44:29 +02:00
Fajar A. Nugraha
cff7b5eb80 Allow veth that is not attached to a bridge on unprivileged container
Signed-off-by: Fajar A. Nugraha <github@fajar.net>
2015-03-17 18:05:14 +07:00
Stéphane Graber
d3b6301135 Skip control tty code for non-ttys
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-03-16 22:44:39 -04:00
Stéphane Graber
453d4bca05 Merge pull request #468 from hwoarang/master
templates: gentoo.common: Add /dev/shm tmpfs mount entry
2015-03-13 19:25:00 -04:00
KATOH Yasufumi
5f94f7a735 doc: Add options of 'loop' backingstore to lxc-create(1)
Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-03-13 19:23:40 -04:00
Bogdan Purcareata
b4067426d5 seccomp: add ppc support
This patch enables seccomp support for LXC containers running on PowerPC
architectures. It is based on the latest PowerPC support added to libseccomp, on
the working-ppc64 branch [1].

Libseccomp has been tested on ppc, ppc64 and ppc64le architectures. LXC with
seccomp support has been tested on ppc and ppc64 architectures, using the
default seccomp policy example files delivered with the LXC package.

[1] https://github.com/seccomp/libseccomp/commits/working-ppc64

v2:
- add #ifdefs in get_new_ctx to fix builds on systems not having SCMP_ARCH_PPC*
  defined

Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-03-13 19:22:22 -04:00
Erik Mackdanz
7785e39c96 Fix the --auth-key flag in gentoo template
Fix a typo in the getopt call,  should be auth-key not auth_key.
Also provide the argument to cat, so the script doesn't hang waiting
on stdin.

Closes #379

Signed-off-by: Erik Mackdanz <erikmack@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-03-13 19:20:24 -04:00
Stéphane Graber
82e28fe049 Attempt to fix control tty issues on attach
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-03-13 19:19:22 -04:00
Markos Chandras
7ed54c6155 templates: gentoo.common: Add /dev/shm tmpfs mount entry
/dev/shm needs to be mounted as tmpfs. It's needed by python
and possibly other packages.

Signed-off-by: Markos Chandras <hwoarang@gentoo.org>
2015-03-12 20:53:10 +00:00
Stéphane Graber
10f277105b Fix get_config_item for sys:mixed
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-03-11 12:25:06 -04:00
Stéphane Graber
50066f4f7e Prefer iproute over ifconfig
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-03-11 12:25:05 -04:00
Stéphane Graber
24f97cf71d Merge pull request #464 from pymag09/lxccreate
Lxccreate: add a backing store type (bdevtype) to a python create function
2015-03-10 12:25:35 -04:00
Stéphane Graber
214b8bfce4 Merge pull request #456 from itoffshore/master
fix lxc-console on centos / oracle unprivileged containers
2015-03-10 12:24:45 -04:00
Stéphane Graber
abda570e25 Merge pull request #463 from bostjan/bugfix/lxctop-limit-name-width
lxc-top: limit container name to 18 characters
2015-03-10 12:24:20 -04:00
Stuart Cardall
6e53ca56a4 fix lxc-console on centos / oracle unprivileged containers
Signed-off-by: Stuart Cardall <developer@it-offshore.co.uk>
2015-03-10 10:55:42 +00:00
Bostjan Skufca
99a7b6f7bb autostart: Fix bug with containers being started in reverse order
Signed-off-by: Bostjan Skufca <bostjan@a2o.si>
2015-03-10 11:38:06 +01:00
Bostjan Skufca
9a6d86dcc7 lxc-top: limit container name to 18 characters
Signed-off-by: Bostjan Skufca <bostjan@a2o.si>
2015-03-10 11:29:19 +01:00
Bieiaievskyi Sergey
d1dd911376 add bdevtype to lxc create procedure
Signed-off-by: Bieliaievskyi Sergey magelan09@gmail.com
2015-03-10 11:14:01 +02:00
KATOH Yasufumi
ea4cadbfac doc: Add lxc.rebootsignal to Japanese man pages.
Also fix some indentation and improve translation.
Update for commit 936762f

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-03-09 22:21:04 -04:00
KATOH Yasufumi
d8c4c595c4 Use rdepends when non-thinpool LVM container is cloned
When a non-thinpool LVM container which have snapshotted clone is
destroyed, the LV of snapshotted clone was also deleted. This patch
prevent it.

The original non-thinpool LVM container of snapshotted clone cannot be
now destroyed.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-03-09 22:21:04 -04:00
Stéphane Graber
7674317572 Merge pull request #446 from jhenninger/attach_exit
attach: use _exit() instead of exit() in the intermediate child process
2015-03-09 21:48:19 -04:00
lxc@zitta.fr
35e68b0447 gentoo container building fails during wget.
follow new gentoo's download server configuration.
Should be backported in earlier lxc versions.

Signed-off-by: Guillaume ZITTA <lxc@zitta.fr>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-03-09 21:26:11 -04:00
Stéphane Graber
3b6aebceaf Update Travis configuration
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2015-02-23 18:39:28 -05:00
Johannes Henninger
5dcc1ca6a4 attach: use _exit() instead of exit() in the intermediate child process
This prevents on_exit() and atexit() handlers registered by the parent
process from being run in the forked intermediate process.

Signed-off-by: Johannes Henninger <johannes@henninger.io>
2015-02-20 15:14:54 +01:00
Bogdan Purcareata
22fb28a946 lxc-busybox: use lxc.rebootsignal = SIGTERM
Otherwise lxc-stop -r has no effect on the container.

Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-02-18 09:42:40 -08:00
Bogdan Purcareata
936762f3fb document lxc.rebootsignal
Also fix some minor indentation mishaps since we're here.

Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-02-18 09:42:38 -08:00
Bogdan Purcareata
dd267776ee add lxc.rebootsignal
Following the model of f0f1d8c076, add a reboot
signal for special init processes that work on something other than SIGINT.

Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-02-18 09:42:36 -08:00
KATOH Yasufumi
65f8fdda25 doc: Add about zfs, aufs, overlayfs to '-s' option of lxc-clone(1)
Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-02-18 09:40:29 -08:00
KATOH Yasufumi
a9b21284fc doc: Update lxc-snapshot(1) for moving snapshot directory
At the commit 18aa217, the snapshot dir was moved to /var/lib/lxc/c/snaps.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-02-18 09:40:29 -08:00
Stéphane Graber
f4b15ee1d0 Merge pull request #444 from tukiyo/patch-1
no such option: --releasever on CentOS5's yum
2015-02-17 21:28:11 -05:00
tukiyo
6d41f7dfa6 no such option: --releasever on CentOS5's yum
Signed-off-by: tukiyo3 <tukiyo3@gmail.com>
2015-02-17 10:05:25 +09:00
Stéphane Graber
0ad409c736 Merge pull request #441 from ovr/patch-1
Update CONTRIBUTING
2015-02-16 09:15:58 -05:00
Дмитрий Пацура
fd0bef1e5e Update CONTRIBUTING
Signed-off-by: Dmitry Patsura <talk@dmtry.me>
2015-02-14 22:30:49 +08:00
brauner
a38e3e325d config: Allow all containers to use fuse
This enables containers to mount fuse filesystems per default. The mount
is designed to be safe. Hence, it can be enabled per default in
common.conf. It will lead to a cleaner boot for some unprivileged
systemd-based containers.

Signed-off-by: Christian Brauner <christianvanbrauner@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-02-08 18:26:21 +02:00
Stéphane Graber
b88ff9a0e3 In lxc.mount.auto, skip on ENONENT
This resolves the case where /proc/sysrq-trigger doesn't exist by simply
ignoring any mount failure on ENOENT. With the current mount list, this
will always result in a safe environment (typically the read-only
underlay).

Closes #425

v2: Don't always show an error

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-02-08 18:08:48 +02:00
Stéphane Graber
24ab0d3404 proc:mixed make /proc/sys/net writable
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-02-08 18:08:44 +02:00
Tycho Andersen
96fe6d1d9c Process command line is null terminated
It turns out the process command line is in fact null terminated on the stack;
this caused a bug where when the new process title was smaller than the old
one, the first environment entry would be rendered as part of the process
title.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2015-02-08 18:08:39 +02:00
KATOH Yasufumi
a61848fe21 plamo: Change how to create objects under /dev in the container
lxc-plamo stop:
* creating objects under /dev when creating the container
* removing /dev population process from original rc script

now populate /dev at container boot time, and allow to enable
lxc.autodev=1

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-02-08 18:08:25 +02:00
Serge Hallyn
73c1c88714 getproctitle - check for null after last strchr
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2015-01-31 14:10:22 +01:00
Stéphane Graber
5d6ef2286f
Also define PR_SET_MM (fixes Android)
Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
2015-01-30 18:24:04 +01:00
Tycho Andersen
553347e403 define some macros to fix the build
Not all kernels have these macros; they'll just give an EINVAL if/when invoked.

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2015-01-30 16:04:02 +01:00