]> git.ipfire.org Git - thirdparty/lxc.git/log
thirdparty/lxc.git
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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.

10 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.

10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 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>
10 years agologs: introduce a thread-local 'current' lxc_config
Serge Hallyn [Wed, 11 Mar 2015 22:10:55 +0000 (22:10 +0000)] 
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>
10 years agoMerge pull request #469 from fajarnugraha/usernet-20150317
Stéphane Graber [Mon, 6 Apr 2015 14:53:44 +0000 (10:53 -0400)] 
Merge pull request #469 from fajarnugraha/usernet-20150317

Allow veth that is not attached to a bridge on unprivileged container

10 years agoMerge pull request #465 from bostjan/bugfix/autostart-order-reverse
Stéphane Graber [Mon, 6 Apr 2015 14:50:16 +0000 (10:50 -0400)] 
Merge pull request #465 from bostjan/bugfix/autostart-order-reverse

autostart: Fix bug with containers being started in reverse order

10 years agoMerge pull request #480 from aletourneau/centos.releasever
Stéphane Graber [Wed, 1 Apr 2015 22:31:24 +0000 (18:31 -0400)] 
Merge pull request #480 from aletourneau/centos.releasever

Added a more reliable test for yum --releasever in the centos template

10 years agoNow including grep -q 480/head
Alexandre Létourneau [Wed, 1 Apr 2015 22:22:50 +0000 (18:22 -0400)] 
Now including grep -q
Signed-off-by: Alexandre Letourneau <letourneau.alexandre@gmail.com>
10 years agoAdded a more reliable test for yum --releasever in the centos template
Alexandre Létourneau [Mon, 30 Mar 2015 22:19:27 +0000 (18:19 -0400)] 
Added a more reliable test for yum --releasever in the centos template
Signed-off-by: Alexandre Létourneau <letourneau.alexandre@gmail.com>
10 years agoMerge pull request #452 from achton/master
Stéphane Graber [Mon, 30 Mar 2015 18:58:37 +0000 (14:58 -0400)] 
Merge pull request #452 from achton/master

Correct typo.

10 years agoCorrect typo. 452/head
Achton [Thu, 26 Feb 2015 13:47:25 +0000 (14:47 +0100)] 
Correct typo.

Signed-off-by: Achton Smidt Winther <mail@achton.net>
10 years agoAllow veth that is not attached to a bridge on unprivileged container 469/head
Fajar A. Nugraha [Tue, 17 Mar 2015 11:05:14 +0000 (18:05 +0700)] 
Allow veth that is not attached to a bridge on unprivileged container

Signed-off-by: Fajar A. Nugraha <github@fajar.net>
10 years agoSkip control tty code for non-ttys
Stéphane Graber [Tue, 17 Mar 2015 01:54:26 +0000 (21:54 -0400)] 
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>
10 years agoMerge pull request #468 from hwoarang/master
Stéphane Graber [Fri, 13 Mar 2015 23:25:00 +0000 (19:25 -0400)] 
Merge pull request #468 from hwoarang/master

templates: gentoo.common: Add /dev/shm tmpfs mount entry

10 years agodoc: Add options of 'loop' backingstore to lxc-create(1)
KATOH Yasufumi [Tue, 10 Mar 2015 10:07:39 +0000 (19:07 +0900)] 
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>
10 years agoseccomp: add ppc support
Bogdan Purcareata [Thu, 12 Mar 2015 08:57:47 +0000 (08:57 +0000)] 
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>
10 years agoFix the --auth-key flag in gentoo template
Erik Mackdanz [Thu, 12 Mar 2015 21:36:18 +0000 (16:36 -0500)] 
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>
10 years agoAttempt to fix control tty issues on attach
Stéphane Graber [Fri, 13 Mar 2015 20:43:16 +0000 (16:43 -0400)] 
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>
10 years agotemplates: gentoo.common: Add /dev/shm tmpfs mount entry 468/head
Markos Chandras [Thu, 12 Mar 2015 20:52:11 +0000 (20:52 +0000)] 
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>
10 years agoFix get_config_item for sys:mixed
Stéphane Graber [Wed, 11 Mar 2015 15:57:22 +0000 (11:57 -0400)] 
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>
10 years agoPrefer iproute over ifconfig
Stéphane Graber [Mon, 9 Mar 2015 16:14:29 +0000 (12:14 -0400)] 
Prefer iproute over ifconfig

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoMerge pull request #464 from pymag09/lxccreate
Stéphane Graber [Tue, 10 Mar 2015 16:25:35 +0000 (12:25 -0400)] 
Merge pull request #464 from pymag09/lxccreate

 Lxccreate: add a backing store type (bdevtype) to a python create function

10 years agoMerge pull request #456 from itoffshore/master
Stéphane Graber [Tue, 10 Mar 2015 16:24:45 +0000 (12:24 -0400)] 
Merge pull request #456 from itoffshore/master

fix lxc-console on centos / oracle unprivileged containers

10 years agoMerge pull request #463 from bostjan/bugfix/lxctop-limit-name-width
Stéphane Graber [Tue, 10 Mar 2015 16:24:20 +0000 (12:24 -0400)] 
Merge pull request #463 from bostjan/bugfix/lxctop-limit-name-width

lxc-top: limit container name to 18 characters

10 years agofix lxc-console on centos / oracle unprivileged containers 456/head
Stuart Cardall [Mon, 2 Mar 2015 17:49:20 +0000 (17:49 +0000)] 
fix lxc-console on centos / oracle unprivileged containers

Signed-off-by: Stuart Cardall <developer@it-offshore.co.uk>
10 years agoautostart: Fix bug with containers being started in reverse order 465/head
Bostjan Skufca [Wed, 4 Mar 2015 19:07:52 +0000 (20:07 +0100)] 
autostart: Fix bug with containers being started in reverse order

Signed-off-by: Bostjan Skufca <bostjan@a2o.si>
10 years agolxc-top: limit container name to 18 characters 463/head
Bostjan Skufca [Mon, 9 Mar 2015 18:57:37 +0000 (19:57 +0100)] 
lxc-top: limit container name to 18 characters

Signed-off-by: Bostjan Skufca <bostjan@a2o.si>
10 years agoadd bdevtype to lxc create procedure 464/head
Bieiaievskyi Sergey [Tue, 10 Mar 2015 08:56:59 +0000 (10:56 +0200)] 
add bdevtype to lxc create procedure

Signed-off-by: Bieliaievskyi Sergey magelan09@gmail.com
10 years agodoc: Add lxc.rebootsignal to Japanese man pages.
KATOH Yasufumi [Mon, 23 Feb 2015 08:01:56 +0000 (17:01 +0900)] 
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>
10 years agoUse rdepends when non-thinpool LVM container is cloned
KATOH Yasufumi [Wed, 4 Mar 2015 09:39:14 +0000 (18:39 +0900)] 
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>
10 years agoMerge pull request #446 from jhenninger/attach_exit
Stéphane Graber [Tue, 10 Mar 2015 01:48:19 +0000 (21:48 -0400)] 
Merge pull request #446 from jhenninger/attach_exit

attach: use _exit() instead of exit() in the intermediate child process

10 years agogentoo container building fails during wget.
lxc@zitta.fr [Fri, 20 Feb 2015 21:53:40 +0000 (22:53 +0100)] 
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>
10 years agoUpdate Travis configuration 451/head 461/head
Stéphane Graber [Mon, 23 Feb 2015 23:39:19 +0000 (18:39 -0500)] 
Update Travis configuration

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoattach: use _exit() instead of exit() in the intermediate child process 446/head
Johannes Henninger [Fri, 20 Feb 2015 13:11:03 +0000 (14:11 +0100)] 
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>
10 years agolxc-busybox: use lxc.rebootsignal = SIGTERM
Bogdan Purcareata [Mon, 16 Feb 2015 09:38:36 +0000 (09:38 +0000)] 
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>
10 years agodocument lxc.rebootsignal
Bogdan Purcareata [Mon, 16 Feb 2015 09:38:35 +0000 (09:38 +0000)] 
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>
10 years agoadd lxc.rebootsignal
Bogdan Purcareata [Mon, 16 Feb 2015 09:38:34 +0000 (09:38 +0000)] 
add lxc.rebootsignal

Following the model of f0f1d8c076ae93d8ecf735c2eeae471e27ca6abd, 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>
10 years agodoc: Add about zfs, aufs, overlayfs to '-s' option of lxc-clone(1)
KATOH Yasufumi [Tue, 10 Feb 2015 07:19:09 +0000 (16:19 +0900)] 
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>
10 years agodoc: Update lxc-snapshot(1) for moving snapshot directory
KATOH Yasufumi [Tue, 10 Feb 2015 07:26:58 +0000 (16:26 +0900)] 
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>
10 years agoMerge pull request #444 from tukiyo/patch-1
Stéphane Graber [Wed, 18 Feb 2015 02:28:11 +0000 (21:28 -0500)] 
Merge pull request #444 from tukiyo/patch-1

no such option: --releasever on CentOS5's yum

10 years agono such option: --releasever on CentOS5's yum 444/head
tukiyo [Tue, 17 Feb 2015 01:05:25 +0000 (10:05 +0900)] 
no such option: --releasever on CentOS5's yum

Signed-off-by: tukiyo3 <tukiyo3@gmail.com>
10 years agoMerge pull request #441 from ovr/patch-1
Stéphane Graber [Mon, 16 Feb 2015 14:15:58 +0000 (09:15 -0500)] 
Merge pull request #441 from ovr/patch-1

Update CONTRIBUTING

10 years agoUpdate CONTRIBUTING 441/head
Дмитрий Пацура [Sat, 14 Feb 2015 14:30:49 +0000 (22:30 +0800)] 
Update CONTRIBUTING

Signed-off-by: Dmitry Patsura <talk@dmtry.me>
10 years agoconfig: Allow all containers to use fuse
brauner [Sun, 8 Feb 2015 15:48:31 +0000 (16:48 +0100)] 
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>
10 years agoIn lxc.mount.auto, skip on ENONENT
Stéphane Graber [Mon, 2 Feb 2015 09:21:20 +0000 (11:21 +0200)] 
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>
10 years agoproc:mixed make /proc/sys/net writable
Stéphane Graber [Tue, 3 Feb 2015 07:21:18 +0000 (09:21 +0200)] 
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>
10 years agoProcess command line is null terminated
Tycho Andersen [Wed, 4 Feb 2015 12:02:02 +0000 (14:02 +0200)] 
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>
10 years agoplamo: Change how to create objects under /dev in the container
KATOH Yasufumi [Fri, 6 Feb 2015 05:25:58 +0000 (14:25 +0900)] 
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>
10 years agogetproctitle - check for null after last strchr
Serge Hallyn [Sat, 31 Jan 2015 13:09:47 +0000 (14:09 +0100)] 
getproctitle - check for null after last strchr

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
10 years agoAlso define PR_SET_MM (fixes Android)
Stéphane Graber [Fri, 30 Jan 2015 17:24:04 +0000 (18:24 +0100)] 
Also define PR_SET_MM (fixes Android)

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agodefine some macros to fix the build
Tycho Andersen [Fri, 30 Jan 2015 14:53:53 +0000 (15:53 +0100)] 
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>
10 years agoset the monitor process title to something useful
Tycho Andersen [Fri, 30 Jan 2015 13:59:13 +0000 (14:59 +0100)] 
set the monitor process title to something useful

Instead of having a parent process that's called whatever the caller of the
library is called, we instead set it to "[lxc monitor] <lxcpath> <container>"

Closes #180

v2: check for null in tok for loop, only truncate environment when necessary

Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agochange version to 1.1.0 in configure.ac lxc-1.1.0
Stéphane Graber [Fri, 30 Jan 2015 13:11:30 +0000 (14:11 +0100)] 
change version to 1.1.0 in configure.ac

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agodoc: Add the description of sys:mixed in Japanese lxc.container.conf(5)
KATOH Yasufumi [Fri, 30 Jan 2015 07:05:59 +0000 (16:05 +0900)] 
doc: Add the description of sys:mixed in Japanese lxc.container.conf(5)

Update for commit f24a52d

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoapparmor: support lxc.ttydir when bind-mounting ptys
Serge Hallyn [Thu, 29 Jan 2015 23:50:41 +0000 (23:50 +0000)] 
apparmor: support lxc.ttydir when bind-mounting ptys

Because we now create the ttys from inside the container, we had to
add an apparmor rule for start-container to bind-mount /dev/pts/** -> /dev/tty*/.
However that's not sufficient if the container sets lxc.ttydir, in
which case we need to support mounting onto files in subdirs of /dev.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoubuntu: Drop lucid support and refresh releaess list
Stéphane Graber [Thu, 29 Jan 2015 22:06:05 +0000 (23:06 +0100)] 
ubuntu: Drop lucid support and refresh releaess list

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agooracle: Fix /dev/shm
Stéphane Graber [Thu, 29 Jan 2015 21:59:59 +0000 (22:59 +0100)] 
oracle: Fix /dev/shm

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agocentos: Fix booting a Centos 6 container
Stéphane Graber [Thu, 29 Jan 2015 21:59:58 +0000 (22:59 +0100)] 
centos: Fix booting a Centos 6 container

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agochange version to 1.1.0.rc4 in configure.ac lxc-1.1.0.rc4
Stéphane Graber [Thu, 29 Jan 2015 22:55:55 +0000 (23:55 +0100)] 
change version to 1.1.0.rc4 in configure.ac

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoclone_paths: use 'rootfs' for destination directory
Serge Hallyn [Thu, 29 Jan 2015 16:09:45 +0000 (16:09 +0000)] 
clone_paths: use 'rootfs' for destination directory

We were trying to be smart and use whatever the last part of
the container's rootfs path was.  However for block devices
that doesn't make much sense.  I.e. if lxc.rootfs = /dev/md-1,
chances are that /var/lib/lxc/c1/md-1 does not exist.

So always use the $lxcpath/$lxcname/rootfs, and if it does
not exist, try to create it.

With this, 'lxc-clone -s -o c1 -n c2' where c1 has an lvm backend
is fixed.  See https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1414771

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agocreate lxc.tty ptys from container process
Serge Hallyn [Thu, 29 Jan 2015 10:13:36 +0000 (10:13 +0000)] 
create lxc.tty ptys from container process

Lxc has always created the ptys for use by console and ttys early
on from the monitor process.  This has some advantages, but also
has disadvantages, namely (1) container ptys counting against the
max ptys for the host, and (2) not having a /dev/pts/N in the
container to pass to getty.  (2) was not a problem for us historically
because we bind-mounted the host's /dev/pts/N onto a /dev/ttyN in
the container.  However, systemd hardocdes a check for container_ttys
that the path have 'pts/' in it.  If it were only for (2) I'd have
opted for a systemd patch to check the device major number, but (1)
made it worth moving the openpty to the container namespace.

So this patch moves the tty creation into the task which becomes
the container init.  It then passes the fds for the opened ptys
back to the monitor over a unix socketpair (for use by lxc-console).
The /dev/console is still created in the monitor process, so that
it can for instance be used by lxc.logfd.

So now if you have a foreground container with lxc.tty = 4, you
should end up with one host /dev/pts entry per container rather than 5.

And lxc-console now works with systemd containers.

Note that if the container init mounts its own devpts over the
one mounted by lxc, the tty /dev/pts/n will be hidden.  This is ok
since it's only systemd that needs it, and systemd won't do that.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoUse consistent /proc, /sys and /sys/fs/cgroup (v2)
Stéphane Graber [Wed, 28 Jan 2015 18:41:26 +0000 (19:41 +0100)] 
Use consistent /proc, /sys and /sys/fs/cgroup (v2)

 - Implements mixed mode for /sys where it's mounted read-only but with
   /sys/devices/virtual/net/ writable.

 - Sets lxc.mount.auto to "cgroup:mixed proc:mixed sys:mixed" for all
   templates.

 - Drop any template-specific mount for /proc, /sys or /sys/fs/cgroup.

 - Get rid of the fstab file by default, using lxc.mount.entry instead.

 - Set sys:mixed as the default for "sys". sys:mixed is slightly more
   permissive than sys:ro so this shouldn't be a problem.

The read-only bind mount of /sys on top of itself is there so that
mountall and other init systems don't attempt to remount /sys
read-write.

v2 changes:
 - Fix the mount list, don't specify a source for the remount.
 - Update the documentation.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoFix clearing IPv4/IPv6 addresses
Stéphane Graber [Wed, 28 Jan 2015 09:33:58 +0000 (10:33 +0100)] 
Fix clearing IPv4/IPv6 addresses

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agolxc-{centos|fedora}: Respect --rootfs
Stéphane Graber [Wed, 28 Jan 2015 08:47:44 +0000 (09:47 +0100)] 
lxc-{centos|fedora}: Respect --rootfs

Close #406

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoFix lxc-create -h with absolute template path
Stéphane Graber [Wed, 28 Jan 2015 08:28:22 +0000 (09:28 +0100)] 
Fix lxc-create -h with absolute template path

Close #421

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agosystemd: specify container_ttys in environment
Serge Hallyn [Tue, 27 Jan 2015 23:06:22 +0000 (23:06 +0000)] 
systemd: specify container_ttys in environment

The lxc.tty configuration item specifies a number of ttys to create.
Historically, for each of those, we create a /dev/pts/N entry and
symlink it to /dev/ttyN for older inits to use.  For systemd, we should
instead specify each tty name in a $container_ttys environment variable
passed to init.

See http://www.freedesktop.org/wiki/Software/systemd/ContainerInterface/ and
https://github.com/lxc/lxc/issues/419.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
10 years agoOnly use clear_config_item for lists
Stéphane Graber [Tue, 27 Jan 2015 17:02:13 +0000 (18:02 +0100)] 
Only use clear_config_item for lists

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
10 years agoclear_config_item should only work for lists
Stéphane Graber [Mon, 26 Jan 2015 20:52:11 +0000 (15:52 -0500)] 
clear_config_item should only work for lists

Close #394

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