Bring static and const to tests too

Signed-off-by: Andrey Mazo <mazo@telum.ru>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Additional logic for dealing with container shutdown / reboot

Additional logic for dealing with container shutdown / reboot

Fix a problem with CentOS containers and legacy Fedora (<16) containers
not shutting down or rebooting properly.  Copy /etc/init.d/halt to
/etc/init.d/lxc-halt, deleting everything from the "hwclock save" and
all after and append a force halt or reboot at the end of the new
script, to prevent reexecing init.  Link that script in as
S00lxc-halt in rc0.d and S00lxc-reboot in rc6.d to intercept the
shutdown process before it gets to S01halt / S01reboot causing the hang.

Fixed some typos in the CentOS template that were introduced in the
previous patch for hwaddr settings and missed in regression testing.

Cleaned up some instruction typos and tabs from previous patch.

Signed-off-by: Michael H. Warfield <mhw@WittsEnd.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
change lxc-autostart shutdown to behave like lxc-stop

It is desirable to have a mode where a soft shutdown is requested,
but then do a hard shutdown if after some time period the container
has not shut down. This the default behaviour of lxc-stop, but is
not currently possible with lxc-autostart. This change makes this
the default behaviour when shutdown is specified to lxc-autostart.
This will be very useful for init scripts.

An indefinte wait for soft shutdown (though I'm not sure how that
would be useful) is still possible by passing a timeout of 0.

Change default timeout value to 60 seconds to match lxc-stop

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
snapshot: enforce keeping same backing store type (v2)

Stéphane noticed that lxc-snapshot of a dir-backed container
created an overlayfs container.  The expectation is that the
user can continue to modify the original container and later make
a new snapshot, but this doesn't work with the existing behavior -
the overlayfs clone will end up with the modified contents.

So add a 'LXC_CLONE_KEEPBDEVTYPE' flag, which c->snapshot()
passes to c->clone().

Also add a LXC_CLONE_MAYBE_SNAPSHOT.  If this is set and a
backing store does not support snapshotting, then proceed with
a copy clone.

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
add lxc-autostart support for sysv init systems

This change updates the way init scripts get installed so that more
than one init system can be supported. Instead of installing the
systemd service file from the spec file, it should be installed at
make install time, so that someone compiling from source also gets
the unit file installed.

Update the plamo template to use a lock file not named just
/var/lock/subsys/lxc since the presence of that file is used by
sysv init rc file to know if it should run the K01lxc script. This
also makes it consistent with the other templates which use
/var/lock/subsys/lxc-$template-name.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Revert "Revert "Use pthread_atfork() to unlock mutexes after fork()""

This reverts commit 64b1be2903078ef9e9ba3ffcbc30a4dc9bc5cc6c.

Reverting in preparation for another implementation which is
bionic-compatible.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
check pthread_atfork and thread-local storage

Add pthread_atfork check to configure.ac and uses it when necessary,
Introduces tls.m4 macro for checking thread-local storage support, Puts
values array into thread-local storage
(lxc_global_config_value@src/lxc/utils.c), Removes
static_lock/static_unlock from LXC code.

Lastly, it introduces a warning for bionic users about multithreaded
usage of LXC.

(requires 64b1be2903078ef9e9ba3ffcbc30a4dc9bc5cc6c to be reverted first)

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
doc: Update Japanese lxc-autostart(1)

Update for commit a771fe18d28890cfc545995fb818aa7472744fde

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
doc: Update man pages to the latest information

* lxc-attach(1): Update to the status of kernel 3.8 or higher
* lxc-create(1), lxc-destroy(1): Now lxc-ls don't have "-l" option, so remove
* lxc(7): update description of lxc-ls and lxc-info to current version
* see-also: fix lxc(1) to lxc(7)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
rename lxc-stop shutdown argument to nokill

This makes the arguments between lxc-stop and lxc-autostart more
consistent, so that --shutdown doesn't have two different meanings.

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
lxc-start-ephemeral: fix the man page

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
Use the cgroup name for cpuset for lxc-ps

On my Ubuntu 13.10 system, lxc-ps was always giving empty output. The
output of /proc/$initpid/cgroup was

11:name=systemd:/user/1000.user/c3.session
10:hugetlb:/container
9:perf_event:/container
8:blkio:/container
7:freezer:/container
6:devices:/container
5:memory:/container
4:cpuacct:/container
3:cpu:/container
2:cpuset:/container

Using the cpuset line should be a safer option.

Signed-off-by: Nick Huber <nicholashuber@gmail.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
add lxc.haltsignal for soft shutdown

- use this in the busybox template since busybox's init expects
  to receive SIGUSR1 to halt

- fix lxc.stopsignal to be output by write_config so lxcapi_clone()
  and lxcapi_save_config() will output it

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
configure.ac: add docbook-to-man to dbparsers

Debian and Ubuntu uses docbook2x-man, but some other distr like suse
uses docbook-to-man. I think all of them should work on LXC.

Signed-off-by: Qiang Huang <h.huangqiang@huawei.com>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
allow multiple types of init scripts to be configured

Signed-off-by: Dwight Engen <dwight.engen@oracle.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
disable generating documentation for travis

doxygen and graphviz causes travis vm to download ~400 MB from internet
and causes travis builds to timeouts occasionally.

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
Setting lxc.console = none causes startup failures for the containers that runs in user namespace

Setting "lxc.console = none" causes following failure during startup

      lxc-start 1389039861.061 INFO     lxc_start_ui - using rcfile lxcpath/original/config
      lxc-start 1389039861.062 INFO     lxc_confile - read uid map: type u nsid 0 hostid 260000 range 10000
      lxc-start 1389039861.062 INFO     lxc_confile - read uid map: type g nsid 0 hostid 260000 range 10000
      lxc-start 1389039861.062 WARN     lxc_log - lxc_log_init called with log already initialized
      lxc-start 1389039861.065 INFO     lxc_lsm - LSM security driver AppArmor
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/0' (5/6)
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/7' (7/8)
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/8' (9/10)
      lxc-start 1389039861.066 DEBUG    lxc_conf - allocated pty '/dev/pts/9' (11/12)
      lxc-start 1389039861.066 INFO     lxc_conf - tty's configured
      lxc-start 1389039861.066 DEBUG    lxc_start - sigchild handler set
      lxc-start 1389039861.066 ERROR    lxc_conf - Error chowning
      lxc-start 1389039861.066 ERROR    lxc_conf - Failed to chown
      lxc-start 1389039861.066 ERROR    lxc_start - Failed to shift tty into container
      lxc-start 1389039861.066 ERROR    lxc_start - failed to initialize the container
      lxc-start 1389039861.067 INFO     lxc_monitor - using monitor sock name lxc/0863ffed81827105/lxcpath

fix it by checking the console.name before using it.

Signed-off-by: S.Çağlar Onur <caglar@10ur.org>
Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
doc: Update Japanese lxc-stop(1), lxc.conf(5), lxc-start-ephemeral(1)

* nokill option of lxc-stop (commit 84fbfcb434f5a59680b7f017bbc1d0db0b81a39d)
* lxc.haltsignal in lxc.conf (commit f0f1d8c076ae93d8ecf735c2eeae471e27ca6abd)
* fix sgml (commit d438f5a0ef0f304917e227405d26aef6e7b30303)

Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
lxclock: fall back to /tmp if xdg_rundir is not writeable

This happens for instance if you run a test under sudo which
then runs lxc commands under 'su - <someuser>'

Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
lxclock: fix stupid scope error

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