Commit Graph

4339 Commits

Author SHA1 Message Date
Serge Hallyn
449710f84a cgmanager: fix abuse of 'i'
we were initializing i to 0, then doing a while i <, but then a
separate commit (by myself) used i as a generic variable in between
those two.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-12 17:21:59 -08:00
Serge Hallyn
3b117b8500 Merge pull request #742 from brauner/2015-12-12/split_bdev_into_modules
Split bdev into modules
2016-01-12 00:07:33 -08:00
Christian Brauner
cdb4e53a7d Cleanup bdev.c after splitting into modules
The function

	- bdev_get();

becomes static. It is called from nowhere else so far and never appeared in any
header.

Minor changes

	- Avoid comparisons between int and size_t types. Use size_t where
	  possible else cast to size_t when it makes sense.
	- insert missing spaces between operators
	- put declarations for all static functions at the top

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2016-01-12 08:50:45 +01:00
Christian Brauner
bf76c012b3 Split bdev into modules: lxcnbd
The functions

	- clone_attach_nbd();
	- do_attach_nbd();
	- nbd_busy();
	- nbd_detach();
	- nbd_get_partition();
	- wait_for_partition();

move from bdev.c to lxcnbd.c. They remain static

The functions

	- attach_nbd();
	- detach_nbd_idx();
	- nbd_clonepaths();
	- nbd_create();
	- nbd_destroy();
	- nbd_detect();
	- nbd_mount();
	- nbd_umount();
	- requires_nbd();

move from bdev.c to lxcnbd.{c,h}. They all become extern.

The struct

	- struct nbd_attach_data

moves from bdev.c to lxcnbd.c.

Adapt Makefile.am to include lxcnbd.{c,h}.

The structs

       - struct bdev; /* defined in bdev.h */
       - struct bdev_specs; /* defined in lxccontainer.h */
       - struct lxc_conf; /* defined conf.h */

are forward declared/put as incomplete types into lxcnbd.h as the functions
associated with nbd need access to it.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2016-01-12 08:50:45 +01:00
Christian Brauner
3ceb282072 Split bdev into modules: lxcrbd
The functions

	- rbd_clonepaths();
	- rbd_create();
	- rbd_destroy();
	- rbd_detect();
	- rbd_mount();
	- rbd_umount();

move from bdev.c to lxcrbd.{c,h}. All functions previously declared static
become extern.

Adapt Makefile.am to include lxcrbd.{c,h}.

The structs

       - struct bdev; /* defined in bdev.h */
       - struct bdev_specs; /* defined in lxccontainer.h */
       - struct lxc_conf; /* defined conf.h */

are forward declared/put as incomplete types into lxcrbd.h as the functions
associated with rbd need access to it.

Put:

       - #define __STDC_FORMAT_MACROS

and include:

       - #include <inttypes.h>

in lxcrbd.c so that the format specifier PRIu64 is available.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2016-01-12 08:50:45 +01:00
Christian Brauner
304b4cf3ae Split bdev into modules: lxcloop
The functions

	- loop_clonepaths();
	- loop_create();
	- loop_destroy();
	- loop_detect();
	- loop_mount();
	- loop_umount();

move from bdev.c to lxcloop.{c,h}. All functions previously declared static
become extern.

The functions

	- do_loop_create();
	- find_free_loopdev_no_control();
	- find_free_loopdev();

move from bdev.c to lxcloop.c. They remain static.

Adapt Makefile.am to include lxcloop.{c,h}.

The structs

       - struct bdev; /* defined in bdev.h */
       - struct bdev_specs; /* defined in lxccontainer.h */
       - struct lxc_conf; /* defined conf.h */

are forward declared/put as incomplete types into lxcloop.h as the functions
associated with loop need access to it.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2016-01-12 08:50:45 +01:00
Christian Brauner
9d983015ff Split bdev into modules: lxcdir
The functions

	- dir_clonepaths();
	- dir_create();
	- dir_destroy();
	- dir_detect();
	- dir_mount();
	- dir_umount();

move from bdev.c to lxcdir.{c,h}. All functions which previously were static
become extern.

Adapt Makefile.am to include lxcdir.{c,h}.

The structs

       - struct bdev; /* defined in bdev.h */
       - struct bdev_specs; /* defined in lxccontainer.h */
       - struct lxc_conf; /* defined conf.h */

are forward declared/put as incomplete types into lxcdir.h as the functions
associated with dir need access to it.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2016-01-12 08:50:45 +01:00
Christian Brauner
00f0a1f896 Split bdev into modules: lxcaufs
The functions

	- aufs_clonepaths();
	- aufs_create();
	- aufs_destroy();
	- aufs_detect();
	- aufs_mount();
	- aufs_umount();

move from bdev.c to lxcaufs.{c,h}. All functions which previously were static
become extern.

Adapt Makefile.am to include lxcaufs.{c,h}.

The structs

       - struct bdev; /* defined in bdev.h */
       - struct bdev_specs; /* defined in lxccontainer.h */
       - struct lxc_conf; /* defined conf.h */

are forward declared/put as incomplete types into lxcaufs.h as the functions
associated with aufs need access to it.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2016-01-12 08:50:45 +01:00
Christian Brauner
2b9cbd533d Split bdev into modules: lxclvm
The functions

	- lvm_detect();
	- lvm_mount();
	- lvm_umount();
	- lvm_compare_lv_attr();
	- lvm_is_thin_volume();
	- lvm_is_thin_pool();
	- lvm_snapshot();
	- lvm_clonepaths();
	- lvm_destroy();
	- lvm_create();

move from bdev.c to lxclvm.{c,h}. All functions previously declared as static
become public.

Adapt Makefile.am to include lxclvm.{c,h}.

The function:

	- mount_unknown_fs();

becomes public.

Rationale: It is already called from different places and will be called by lvm,
	and rdb. Also, it is defined twice exactly the same way. Once in conf.c
	and once in bdev.c. Let's avoid that.
	Defining the same function twice in different places just asks for
	trouble.

The functions:

	- blk_getsize();
	- detect_fs();
	- do_mkfs();
	- is_blktype();

become public as they will be called for loop, lvm, and or rdb.

Move the definition of:

	- DEFAULT_FS_SIZE
	- DEFAULT_FSTYPE

from bdev.c to bdev.h to grant other modules access to it.

Remove:
	- find_fstype_cb();

from conf.c. It is defined static in bdev.c

Put:

	- #define __STDC_FORMAT_MACROS

and include:

	- #include <inttypes.h>

in lxclvm.c so that the format specifier PRIu64 is available.

The structs:

	- struct bdev; /* defined in bdev.h */
	- struct bdev_specs; /* defined in lxccontainer.h */
	- struct lxc_conf; /* defined conf.h */

are forward declared/put as incomplete types into lxclvm.h as the functions
associated with lvm need access to it.

Take the chance to restructure bdev.c:

	- put bdev structs which have already been split out into separate
	  modules at the top
	- put declarations of all static functions at the top (This includes
	  all functions associated with modules that have not yet already been
	  put into a separate module.)

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2016-01-12 08:50:45 +01:00
Christian Brauner
8907f44457 Split bdev into modules: lxczfs
The functions:

	- zfs_clone();
	- zfs_clonepaths();
	- zfs_create();
	- zfs_destroy();
	- zfs_detect();
	- zfs_list_entry();
	- zfs_mount();
	- zfs_umount();

move from bdev.c to lxczfs.{c,h}. All functions previously declared as static
become public.

Adapt Makefile.am to include lxczfs.{c,h}.

The structs:

	- struct bdev; /* defined in bdev.h */
	- struct bdev_specs; /* defined in lxccontainer.h */
	- struct lxc_conf; /* defined conf.h */

are forward declared/put as incomplete types into lxczfs.h as the functions
associated with zfs need access to it.

Minor changes:

	- Use exit(EXIT_FAILURE) instead of exit(1).
	- Use brackets around else {} if the if {} did:
		I.e. instead of:

			if {
				// do one;
				// do two;
			} else
				// do three;

		use:

			if {
				// do one;
				// do two;
			} else {
				// do three;
			}
	- Instead of declaring char pointers and arrays on the same line, i.e.:

		char arr[len], *p;

	  do:

		char arr[len];
		char *p;

	  which makes intentions a lot clearer.

	- Since we require c99 anyway, use finer-grained scoping by declaring
	  variables where they are needed instead of simply at the top.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2016-01-12 08:50:45 +01:00
Stéphane Graber
4dbfaf3084 Merge pull request #750 from peti/patch-1
bash completion: the 'have' command was deprecated in favor of '_have'
2016-01-12 09:47:59 +02:00
Stéphane Graber
63ecff3577 Merge pull request #760 from hallyn/2016-01-11/btrfs
copy_storage: try to use snapshot for btrfs
2016-01-12 09:45:46 +02:00
Stéphane Graber
52ba9c5400 Merge pull request #761 from hallyn/2016-01-11/preservens.1
preserve inherited fds for stop hook
2016-01-12 09:43:20 +02:00
Serge Hallyn
330cbe36d8 preserve inherited fds for stop hook
When preserving fds for the stop hook, make sure to also save
any fds we've inherited.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-11 20:55:30 -08:00
Serge Hallyn
ffe344373e Set the right variable to NULL when unsetting ipv6_gateway
We were freeing one and setting a different one to NULL, eventually
leading to a crash when closing the netdev (at container shutdown)
and freeing already-freed memory.

Closes #732

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-11 18:26:37 -08:00
Serge Hallyn
15a90a10d9 copy_storage: try to use snapshot for btrfs
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-11 14:22:43 -08:00
Peter Simons
3db8dd39a7 bash completion: the 'have' command was deprecated in favor of '_have'
`bash-completion` version 2.1 and later no longer include the `have` command,
and consequently the `lxc` competion file fails on such systems. The command is
now called `_have`.

Signed-off-by: Peter Simons <simons@cryp.to>
2016-01-11 18:28:09 +01:00
Terzeus S. Dominguez
6441f6ba7a
Fix zypper repo for Leap
Leap repos are moved one level deeper. Included oss repo only.

Signed-off-by: Terzeus S. Dominguez <zeus@dmgznet.com>
2016-01-11 22:35:26 +08:00
Terzeus S. Dominguez
9a4fe12dc4
Add iproute2 and net-tools to Leap install
Added missing network utilities to base install for Leap. Included
check to do it for Leap 42.1 only.

Signed-off-by: Terzeus S. Dominguez <zeus@dmgznet.com>
2016-01-11 03:31:30 +08:00
Terzeus S. Dominguez
3b7f70d214
Fix typo
Signed-off-by: Terzeus S. Dominguez <zeus@dmgznet.com>
2016-01-11 02:13:10 +08:00
Terzeus S. Dominguez
f2d63d7ac4
Add openSUSE Leap release in opensuse template
Signed-off-by: Terzeus S. Dominguez <zeus@dmgznet.com>
2016-01-10 23:25:41 +08:00
Serge Hallyn
c7ec3de825 Merge pull request #752 from hallyn/2016-01-04/cgroup.use
2016 01 04/cgroup.use
2016-01-08 13:05:42 -08:00
Serge Hallyn
c4cafa080c add LXC_CGNS_AWARE env variable for mount hooks
This way the lxcfs mount hook can know whether lxc knows about
cgroup namespaces.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-08 13:03:37 -08:00
Serge Hallyn
6cee93ac80 attach: unshare cgroupns if possible
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
---
Changelog 20160104: only try if kernel supports cgns.
2016-01-08 13:03:37 -08:00
Serge Hallyn
12983ba458 container start: unshare cgns when possible
We'll probably want to make this configurable with a
lxc.cgroupns = [1|0], but for now just always do it.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>

---
Changelog 20160104: only try to unshare if /proc/self/ns/cgroup exists.
2016-01-08 13:03:37 -08:00
Serge Hallyn
8b5fb7f3d8 detect which cgroups we cannot use
and continue without them if possible.  This allows an unpriv user
who only has a few cgroups he owns to still use lxc.

This patch only handles cgmanger - we need to handle this in cgfs too.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-08 13:03:30 -08:00
Serge Hallyn
919a04ed23 apparmor: recognize 'unconfined' as unconfined.
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-06 11:45:38 -08:00
Vaidas Kascėnas
88753f7abf Update lxc-ubuntu.in
Updated as per request in https://github.com/lxc/lxc/pull/740#discussion-diff-48759756

Signed-off-by: Vaidas Kascėnas vaidas@kascenas.lt
2016-01-06 19:46:33 +02:00
Serge Hallyn
babccc20e8 coverity: preserve_ns returns bool, not int
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-04 14:39:50 -08:00
Serge Hallyn
278d97f74a coverity: ovl_clonepaths: free osrc and ndelta on error paths
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-04 14:37:33 -08:00
Serge Hallyn
7d72b9596c coverity: close fout on error in is_wlan()
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
2016-01-04 14:34:49 -08:00
Serge Hallyn
9bfdc0adc8 Don't try to change aa label if we are already apparmor-confined
Closes #1459

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2016-01-04 16:51:08 -05:00
Stéphane Graber
642e2c5efd Merge pull request #743 from tw4452852/buffer_overflow
fix buffer overflow in ifaddrs.c
2016-01-04 13:09:34 -05:00
Stéphane Graber
1dd9a6c051 Merge pull request #739 from shindo/fix/python-lxc/pyos-afterfork
python-lxc: Call PyOS_AfterFork after attaching to a container
2016-01-04 13:05:59 -05:00
Stéphane Graber
a36a3c0d63 Merge pull request #746 from ar45/fix_debian_systemd_getty
Fix #520 - multiple instances of agetty on systemd.
2016-01-04 13:05:04 -05:00
Wim Coekaerts
25a9939b7b NULL pointer deference if nlmsg_reserve() returns NULL for ifi
nlmsg_reserve() might return NULL

        if (nlmsg_len + tlen > nlmsg->cap)
                return NULL;

Also set err = -ENOMEM where appropriate

Signed-off-by: Wim Coekaerts <wim.coekaerts@oracle.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2016-01-04 12:57:18 -05:00
KATOH Yasufumi
1bc07a5b8d doc: Improve man pages
* Add long options if not be written
* Remove optional tags in OPTIONS section

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2016-01-04 12:55:21 -05:00
KATOH Yasufumi
0794541858 doc: Add LXC_SRC_NAME to lxc.container.conf(5)
only add to English and Japanese docs.

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2016-01-04 12:55:19 -05:00
Wim Coekaerts
ee54ea9a28 network.c:is_wlan() File Leak f
network.c:is_wlan() File Leak f f initialized at line 156 with fopen f
leaks when fopen(path, r) != NULL at line 156 and physname == NULL at
line 163.

Signed-off-by: Wim Coekaerts <wim.coekaerts@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
2016-01-04 12:53:00 -05:00
Wim Coekaerts
a90277dfb5 criu.c: protect from buffer overrun of version in fscanf()
while highly unlikely to happen...
char version[1024];

fscanf(.. %[1024] .., version  );

should leave room for null termination

Signed-off-by: Wim Coekaerts <wim.coekaerts@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2016-01-04 12:52:26 -05:00
KATOH Yasufumi
2984ee3673 Improve the help of lxc-create
* remove unavailable options (-w, -r)
* remove overlapped option (-P)
* classify options according to bdev type

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2016-01-04 12:52:22 -05:00
Marko Hauptvogel
7eff30fd5d Documenting valueless lxc.cap.drop behaviour
From b24b0e16848fbb93402a08efa3950cd59272b8da Mon Sep 17 00:00:00 2001
From: Marko Hauptvogel <marko.hauptvogel@googlemail.com>
Date: Sun, 3 Jan 2016 23:07:19 +0100
Subject: [PATCH] Documenting valueless lxc.cap.drop behaviour

Undocummented behaviour since 7d0eb87.

Signed-off-by: Marko Hauptvogel <marko.hauptvogel@googlemail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2016-01-04 12:52:06 -05:00
Wim Coekaerts
beabd0a28f Add support for Linux for SPARC distribution host and template
Linux for SPARC is a free community Linux distribution for SPARC hosted by Oracle. See : https://oss.oracle.com/projects/linux-sparc

While the distribution is based on Oracle Linux it does have some differences and since it's not actually Oracle Linux I decided to add a separate template rather than having the Oracle Linux template also support Linux for SPARC.

This patch adds the lxc-template for Linux for SPARC and it also adds Linux for SPARC in the configure.ac as a distribution target to build.

Signed-off-by: Wim Coekaerts <wim.coekaerts@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
2016-01-04 12:51:21 -05:00
Aron Podrigal
a3d42f4bd6 Fix #520 - multiple instances of agetty on systemd.
Fixes issue with double tty login lxc-console
Ref #520, #484

Signed-off-by: Aron Podrigal <aronp@guaranteedplus.com>
2015-12-31 23:28:32 -05:00
tw19881113@gmail.com
da4cacd1fa fix buffer overflow in ifaddrs.c
jenkins: ok to test

Signed-off-by: Tw <tw19881113@gmail.com>
2015-12-30 15:41:36 +08:00
Serge Hallyn
cb65e5d71b Merge pull request #734 from brauner/2015-12-12/split_bdev_into_modules
split bdev into modules: btrfs + rsync
2015-12-28 14:38:25 -08:00
Christian Brauner
c40c5fdf54 Add <linux/types.h> header to lxcbtrfs.h
Using

	#include <sys/types.h>

is not sufficient to guarantee that __le64 and other types are defined.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2015-12-28 14:36:49 -08:00
Christian Brauner
3188197d24 Simplify overlay.{c,h}
The struct

	struct ovl_rsync_data {
		struct bdev *orig;
		struct bdev *new;
	};

is simply a duplicate of

	struct rsync_data {
		struct bdev *orig;
		struct bdev *new;
	};

So let's replace any references to ovl_rsync_data with rsync_data.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2015-12-28 14:36:49 -08:00
Christian Brauner
e9df7e1a94 Split bdev into modules: lxcrsync
The functions:

        - do_rsync();
        - rsync_delta();
        - rsync_delta_wrapper();
        - rsync_rootfs();
        - rsync_rootfs_wrapper();

and the structs

        - struct rsync_data;
        - struct rsync_data_char;

move from bdev.{c,h} to lxcrsync.{c.h}. All functions previously declared as
static become public.

lxcrsync.{c,h} should allow for a reasonable amount of abstraction regarding
our rsync functions. Some of the functions could easily be abstracted.

Adapt Makefile.am to include lxcrsync.{c,h}.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2015-12-28 14:36:47 -08:00
Christian Brauner
988be9c137 lxcbtrfs.{c,h} rework declarations and definitions
Declare

	- btrfs_same_fs();
	- btrfs_snapshot();

extern instead of static in lxcbtrfs.h. They are defined in lxcbtrfs.c.

Forward declare/put

	- struct bdev; /* defined in bdev.h */
	- struct bdev_specs; /* defined in lxccontainer.h */
	- struct lxc_conf; /* defined conf.h */

as incomplete types in lxcbtrfs.h so that functions declared and defined in
lxcbtrfs.{c,h} have access to it.

Declare

	- dir_new_path();

in lxcbtrfs.c. It is defined in lxccontainer.c.

Move definition of struct

	- struct rsync_data_char;

from bdev.c to bdev.h because the functions in lxcbtrfs.{c,h} need to access it.

Signed-off-by: Christian Brauner <christian.brauner@mailbox.org>
2015-12-28 14:35:52 -08:00