[lxc-devel] lxc-clone rewrite

Christian Brauner christianvanbrauner at gmail.com
Sun Sep 6 08:38:15 UTC 2015


These commits enable a container to be destroyed on shutdown by setting
lxc.ephemeral = 1 in its configuration file. This will allow us a consistent
implementation of lxc-copy = lxc-clone + lxc-start-ephemeral without having to
resort to hacks.

Small changes:

lxc_delete_string_in_array() has beed added to utils.c. It replaces the manual
method for deleting a container entry in lxc_snapshots files in mod_rdep() in
lxccontainer.c.
static do_bdev_destroy() has been moved to bdev.c and bdev.h and made public
because it will be reused in start.c.
The "shutdown-handler" lxc_fini() has been modified to call the new static
function lxc_destroy_container_on_signal() to destroy containers which have
lxc.ephemeral = 1 set in their config file. Currently only overlayfs and aufs
backed containers can be destroyed in this way because this is so far the only
case we care about (lxc-start-ephemeral part of lxc-copy) but the function works
for all bdev types supported by lxc.

These commits are also present as a PR on github.

Christian Brauner (6):
  Add lxc.ephemeral     lxc.ephemeral indicates whether a container will
    be destroyed on shutdown     Any integer value > 0 can be used to
    indicate that a container is ephemeral.
  Delete string from array     Add function to delete a string from a
    non-null terminated buffer
  Remove container entry from lxc_snapshots file     Use new helper
    function lxc_delete_string_in_array() from utils.c
  Add bdev_destroy() to bdev.c and bdev.h     static do_bdev_destroy()
    in lxccontainer.c becomes public bdev_destroy()
  Destroy bdevs using new bdev_destroy() from bdev.h
  Enable lxc_fini() to destroy container on shutdown     This works for
    any bdev-type but is only used for overlayfs and aufs now

 src/lxc/bdev.c         | 18 +++++++++++++
 src/lxc/bdev.h         |  1 +
 src/lxc/conf.h         |  3 +++
 src/lxc/confile.c      | 16 ++++++++++++
 src/lxc/lxccontainer.c | 35 ++++++-------------------
 src/lxc/start.c        | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++
 src/lxc/utils.c        | 14 ++++++++++
 src/lxc/utils.h        |  3 +++
 8 files changed, 133 insertions(+), 27 deletions(-)

-- 
2.5.1



More information about the lxc-devel mailing list