1. 03 Nov, 2017 4 commits
    • confile: add lxc.namespace.<namespace-key> · 28d9e29e
      Christian Brauner authored
      This commit also gets rid of ~10 unnecessarily file descriptors that were kept
      open. Before we kept open:
      
      - A set of file descriptors that refer to the monitor's namespaces. These were
        only used to reattach to the monitor's namespace in lxc_spawn() and were
        never used anywhere else. So close them and don't keep them around.
      - A list of inherited file descriptors.
      - A list of file descriptors referring to the containers's namespaces to pass
        to lxc.hook.stop. This list duplicated inherited file descriptors.
      
      Let's simply use a single list in the handler that has all file descriptors we
      need and get rid of all other ones. As an illustration. Starting a container
      
      1. Without this patch and looking at the fds that the monitor keeps open (26):
      
      chb@conventiont|~
      > ls -al /proc/27219/fd
      total 0
      dr-x------ 2 root root  0 Oct 29 14:30 .
      dr-xr-xr-x 9 root root  0 Oct 29 14:30 ..
      lrwx------ 1 root root 64 Oct 29 14:30 0 -> /dev/null
      lrwx------ 1 root root 64 Oct 29 14:30 1 -> /dev/null
      lrwx------ 1 root root 64 Oct 29 14:30 10 -> anon_inode:[signalfd]
      lrwx------ 1 root root 64 Oct 29 14:30 11 -> /dev/ptmx
      lrwx------ 1 root root 64 Oct 29 14:30 12 -> /dev/pts/10
      lr-x------ 1 root root 64 Oct 29 14:30 13 -> net:[4026532553]
      lrwx------ 1 root root 64 Oct 29 14:30 15 -> socket:[7909181]
      lrwx------ 1 root root 64 Oct 29 14:30 16 -> socket:[7909182]
      lr-x------ 1 root root 64 Oct 29 14:30 17 -> uts:[4026531838]
      lr-x------ 1 root root 64 Oct 29 14:30 18 -> ipc:[4026531839]
      lr-x------ 1 root root 64 Oct 29 14:30 19 -> net:[4026532009]
      lrwx------ 1 root root 64 Oct 29 14:30 2 -> /dev/null
      lr-x------ 1 root root 64 Oct 29 14:30 20 -> mnt:[4026532611]
      lr-x------ 1 root root 64 Oct 29 14:30 21 -> pid:[4026532612]
      lr-x------ 1 root root 64 Oct 29 14:30 22 -> uts:[4026532548]
      lr-x------ 1 root root 64 Oct 29 14:30 23 -> ipc:[4026532549]
      lr-x------ 1 root root 64 Oct 29 14:30 24 -> net:[4026532553]
      l-wx------ 1 root root 64 Oct 29 14:30 3 -> /var/log/lxc/a1.log
      lr-x------ 1 root root 64 Oct 29 14:30 4 -> uts:[4026532548]
      lr-x------ 1 root root 64 Oct 29 14:30 5 -> ipc:[4026532549]
      lr-x------ 1 root root 64 Oct 29 14:30 6 -> net:[4026532553]
      lrwx------ 1 root root 64 Oct 29 14:30 7 -> anon_inode:[eventpoll]
      lrwx------ 1 root root 64 Oct 29 14:30 9 -> socket:[7911594]
      
      2. With this patch and looking at the fds that the monitor keeps open (19):
      
      chb@conventiont|~
      > ls -al /proc/28465/fd
      total 0
      dr-x------ 2 root root  0 Oct 29 14:31 .
      dr-xr-xr-x 9 root root  0 Oct 29 14:31 ..
      lrwx------ 1 root root 64 Oct 29 14:31 0 -> /dev/null
      lrwx------ 1 root root 64 Oct 29 14:31 1 -> /dev/null
      lr-x------ 1 root root 64 Oct 29 14:31 10 -> net:[4026532820]
      lrwx------ 1 root root 64 Oct 29 14:31 12 -> socket:[7912349]
      lrwx------ 1 root root 64 Oct 29 14:31 13 -> socket:[7912350]
      lr-x------ 1 root root 64 Oct 29 14:31 14 -> mnt:[4026532611]
      lr-x------ 1 root root 64 Oct 29 14:31 15 -> pid:[4026532813]
      lr-x------ 1 root root 64 Oct 29 14:31 16 -> uts:[4026532612]
      lr-x------ 1 root root 64 Oct 29 14:31 17 -> ipc:[4026532613]
      lr-x------ 1 root root 64 Oct 29 14:31 18 -> net:[4026532820]
      lrwx------ 1 root root 64 Oct 29 14:31 2 -> /dev/null
      l-wx------ 1 root root 64 Oct 29 14:31 3 -> /var/log/lxc/a1.log
      lrwx------ 1 root root 64 Oct 29 14:31 4 -> anon_inode:[signalfd]
      lrwx------ 1 root root 64 Oct 29 14:31 5 -> /dev/ptmx
      lrwx------ 1 root root 64 Oct 29 14:31 6 -> /dev/pts/10
      lrwx------ 1 root root 64 Oct 29 14:31 7 -> anon_inode:[eventpoll]
      lrwx------ 1 root root 64 Oct 29 14:31 9 -> socket:[7913041]
      
      Relates to #1881.
      Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
    • handler: make name argument const · f0ecc19d
      Christian Brauner authored
      There's no obvious need to strdup() the name of the container in the handler.
      We can simply make this a pointer to the memory allocated in
      lxc_container_new().
      Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
    • lxc-start: remove unnecessary checks · 4e4832ee
      Christian Brauner authored
      The console struct is internal and liblxc takes care of creating paths.
      Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
  2. 02 Nov, 2017 2 commits
  3. 30 Oct, 2017 5 commits
  4. 29 Oct, 2017 1 commit
    • attach: correctly handle namespace inheritance · 299d1198
      Christian Brauner authored
      When attaching to a container's namespaces we did not handle the case where we
      inherited namespaces correctly. In essence, liblxc on start records the
      namespaces the container was created with in the handler. But it only records
      the clone flags that were passed to clone() and doesn't record the namespaces
      we e.g. inherited from other containers. This means that attach only ever
      attached to the clone flags. But this is only correct if all other namespaces
      not recorded in the handler refer to the namespaces of the caller. However,
      this need not be the case if the container has inherited namespaces from
      another container. To handle this case we need to check whether caller and
      container are in the same namespace. If they are, we know that things are all
      good. If they aren't then we need to attach to these namespaces as well.
      Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
  5. 28 Oct, 2017 3 commits
  6. 27 Oct, 2017 7 commits
  7. 26 Oct, 2017 1 commit
    • lxc-debian: allow creating `testing` and `unstable` · 61fa1329
      Antonio Terceiro authored
      Being able to create `testing` containers, regardless of what's the name
      of the next stable, is useful in several contexts, included but not
      limited to testing purposes. i.e. one won't need to explicitly switch to
      `bullseye` once `buster` is released to be able to continue tracking
      `testing`. While we are at it, let's also enable `unstable`, which is
      exactly the same as `sid`, but there is no reason for not being able to.
      Signed-off-by: 's avatarAntonio Terceiro <terceiro@debian.org>
  8. 21 Oct, 2017 14 commits
  9. 20 Oct, 2017 2 commits
  10. 18 Oct, 2017 1 commit