- 01 Jul, 2015 40 commits
-
-
Tycho Andersen authored
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>
-
Stéphane Graber authored
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>
-
Dwight Schauer authored
The yum in Centos 5.11 does not know about '--releasever', which is used by: lxc-create ... -- release=VERSION The release version only needs to be set in the outer bootstrap, not the inner one. With this change an lxc-create bootstrap of CentOS 5.11 completes enough to be usable. CentOS 5.11 containers can be created, started, stopped, and networking works. Signed-off-by:Dwight Schauer <das@teegra.net>
-
KATOH Yasufumi authored
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>
-
Serge Hallyn authored
(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>
-
Serge Hallyn authored
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/1452451Signed-off-by:
Serge Hallyn <serge.hallyn@ubuntu.com> Acked-by:
Stéphane Graber <stgraber@ubuntu.com>
-
KATOH Yasufumi authored
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>
-
KATOH Yasufumi authored
Signed-off-by:
KATOH Yasufumi <karma@jazz.email.ne.jp> Acked-by:
Stéphane Graber <stgraber@ubuntu.com>
-
S.Çağlar Onur authored
Signed-off-by:
S.Çağlar Onur <caglar@10ur.org> Acked-by:
Stéphane Graber <stgraber@ubuntu.com>
-
Tycho Andersen authored
Signed-off-by:
Tycho Andersen <tycho.andersen@canonical.com> Acked-by:
Serge E. Hallyn <serge.hallyn@ubuntu.com>
-
Serge Hallyn authored
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>
-
Serge Hallyn authored
Signed-off-by:
Serge Hallyn <serge.hallyn@ubuntu.com> Acked-by:
Stéphane Graber <stgraber@ubuntu.com>
-
Serge Hallyn authored
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>
-
有张纸 authored
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>
-
Serge Hallyn authored
Signed-off-by:Serge Hallyn <serge.hallyn@ubuntu.com>
-
Erik B. Andersen authored
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>
-
Lucas Werkmeister authored
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>
-
Cyril Bitterich authored
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>
-
Karl-Philipp Richter authored
Signed-off-by:Karl-Philipp Richter <krichter722@aol.de>
-
Martin Pitt authored
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
-
Kien Truong authored
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>
-
Kien Truong authored
Signed-off-by:Kien Truong <duckientruong@gmail.com>
-
Kien Truong authored
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>
-
Serge Hallyn authored
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>
-
Stéphane Graber authored
Signed-off-by:Stéphane Graber <stgraber@ubuntu.com>
-
Tycho Andersen authored
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>
-
Stéphane Graber authored
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>
-
Stéphane Graber authored
Signed-off-by:
Stéphane Graber <stgraber@ubuntu.com> Acked-by:
Serge E. Hallyn <serge.hallyn@ubuntu.com>
-
Thomas Moschny authored
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>
-
Karl-Philipp Richter authored
Signed-off-by:Karl-Philipp Richter <krichter722@aol.de>
-
Christian Brauner authored
(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>
-
Natanael Copa authored
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>
-
Serge Hallyn authored
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>
-
Serge Hallyn authored
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>
-
Tycho Andersen authored
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>
-
Tycho Andersen authored
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>
-
Tycho Andersen authored
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>
-
Tycho Andersen authored
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>
-
Tycho Andersen authored
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>
-
Tycho Andersen authored
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>
-