Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Commits on Apr 24, 2015
  1. @ncopa @stgraber

    lxc-alpine: create /dev/shm before mounting

    ncopa authored stgraber committed
    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>
  2. @stgraber

    Add IPv6 support to lxc-net

    stgraber authored
    Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
    Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
Commits on Apr 22, 2015
  1. @hallyn

    use poll instead of select

    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>
  2. @hallyn

    logs: introduce a thread-local 'current' lxc_config (v2)

    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>
  3. @stgraber

    lxc-busybox: add OpenSSH support

    Bogdan Purcareata authored stgraber committed
    Add an additional template parameter for SSH support in the container. Currently
    this can be implemented using the Dropbear or OpenSSH utility. The respective
    tool needs to be available on the host Linux.
    
    If the parameter is omitted, the template will look for the Dropbear utility on
    the host and install it if it is available (legacy behavior).
    
    Adding OpenSSH support has been done following the model in the lxc-sshd
    template.
    
    Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
    Acked-by: Stéphane Graber <stgraber@ubuntu.com>
  4. @tych0 @stgraber

    c/r: re-open fds after clone()

    tych0 authored stgraber committed
    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>
  5. @tych0 @stgraber

    c/r: enable hugetlbfs in criu

    tych0 authored stgraber committed
    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>
  6. @tych0 @stgraber

    c/r: check version of criu

    tych0 authored stgraber committed
    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>
  7. @tych0 @stgraber

    c/r: move criu code to its own file

    tych0 authored stgraber committed
    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>
  8. @tych0 @stgraber

    c/r: use criu option instead of lxc-restore-net

    tych0 authored stgraber committed
    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>
  9. @tych0 @stgraber

    c/r: rework external mountpoint handling v4

    tych0 authored stgraber committed
    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>
Commits on Apr 14, 2015
  1. @hallyn

    Revert (by hand) "logs: introduce a thread-local 'current' lxc_config"

    hallyn authored
    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>
  2. @hallyn

    Revert "lxc-cmd-stop: two fixes"

    hallyn authored
    This breaks code that depended on the monitor being fully dead before
    c->stop() returns.
    
    This reverts commit 62e0416.
  3. @hallyn

    Revert "do_lxcap_stop: wait until container is stopped"

    hallyn authored
    This breaks lxc-test-concurrent.
    
    This reverts commit fef9aa8.
  4. @hallyn

    do_lxcap_stop: wait until container is stopped

    hallyn authored
    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>
Commits on Apr 13, 2015
  1. @tych0 @stgraber

    don't compare unsigned values as negative ones

    tych0 authored stgraber committed
    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>
  2. @vivier @stgraber

    lxc-fedora: manage secondary architectures

    vivier authored stgraber committed
    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>
  3. @tych0 @stgraber

    fix dead code

    tych0 authored stgraber committed
    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>
  4. @tych0 @stgraber

    fix NULL dereference

    tych0 authored stgraber committed
    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>
  5. @tych0 @stgraber

    c/r: no double fclose() of mnts

    tych0 authored stgraber committed
    Reported-by: Coverity
    Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
    Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
  6. @tych0 @stgraber

    fix integer overflow in setproctitle

    tych0 authored stgraber committed
    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>
  7. @hallyn @stgraber

    lxc-cmd-stop: two fixes

    hallyn authored stgraber committed
    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>
Commits on Apr 10, 2015
  1. @tych0 @stgraber

    add vim swap files to .gitignore

    tych0 authored stgraber committed
    Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
    Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
  2. @tych0 @stgraber

    c/r: populate clone flags on restore

    tych0 authored stgraber committed
    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>
Commits on Apr 7, 2015
  1. @teruo-oshida @stgraber

    update path of tty.conf

    teruo-oshida authored stgraber committed
    $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>
Commits on Apr 6, 2015
  1. @stgraber

    Really fix Android...

    stgraber authored
    Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
  2. @stgraber

    Fix Android build because of getmntent_r

    stgraber authored
    Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
  3. @tych0 @stgraber

    c/r: tell CRIU about all external mounts in the config

    tych0 authored stgraber committed
    Signed-off-by: Tycho Andersen <tycho.andersen@canonical.com>
    Acked-by: Stéphane Graber <stgraber@ubuntu.com>
  4. @tych0 @stgraber

    Use SYSERROR instead of perror

    tych0 authored stgraber committed
    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>
  5. @tych0 @stgraber

    don't hang on some errors in do_restore

    tych0 authored stgraber committed
    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>
  6. @tych0 @stgraber

    lxcapi_restore shouldn't steal the calling process

    tych0 authored stgraber committed
    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>
  7. @stgraber

    Fix incomplete destruction of unprivileged ephemeral containers

    stgraber authored
    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>
  8. @hallyn @stgraber

    lxc-test-apparmor: flush the pipe before exiting child

    hallyn authored stgraber committed
    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>
  9. @tenforward @stgraber

    Add the use of 'attach' to lxc-start-ephemeral(1)

    tenforward authored stgraber committed
    Update for commit 8158c05
    
    Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
    Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
  10. @tenforward @stgraber

    doc: Add '--storage-type' option to lxc-start-ephemeral(1)

    tenforward authored stgraber committed
    Signed-off-by: KATOH Yasufumi <karma@jazz.email.ne.jp>
    Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
Something went wrong with that request. Please try again.