1. 11 Dec, 2017 6 commits
    • start: intelligently use clone() on ns sharing · 8deca6c9
      Christian Brauner authored
      When I first solved this problem I went for a fork() + setns() + clone() model.
      This works fine but has unnecessary overhead for a couple of reasons:
      
      - doing a full fork() including copying file descriptor table and virtual
        memory
      - using pipes to retrieve the pid of the second child (the actual container
        process)
      
      This can all be avoided by being a little smart in how we employ the clone()
      syscall:
      
      - using CLONE_VM will let us get rid of using pipes since we can simply write
        to the handler because we share the memory with our parent
      - using CLONE_VFORK will also let us get rid of using pipes since the execution
        of the parent is suspended until the child returns
      - using CLONE_VM will not cause virtual memory to be copied
      - using CLONE_FILES will not cause the file descriptor table to be copied
      
      Note that the intermediate clone() is used with CLONE_VM. Some glibc versions
      used to reset the pid/tid to -1 when CLONE_VM was used without CLONE_THREAD.
      But since the memory between parent and child is shared on CLONE_VM this would
      invalidate the getpid() cache that glibc used to maintain and so getpid() in
      the child would return the parent's pid. This is all fixed in newer glibc
      versions where the getpid() cache is removed and the pid/tid is not reset
      anymore. However, if for whatever reason you - dear commiter - somehow need to
      get the pid of the dummy intermediate process for do_share_ns() you need to
      call syscall(__NR_getpid) directly. The next lxc_clone() call does not employ
      CLONE_VM and will be fine.
      Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
    • Merge pull request #2009 from lifeng68/add_sysctl · ed20740b
      Christian Brauner authored
      confile: add lxc.sysctl config
    • confile: Add lxc.sysctl config · 7edd0540
      LiFeng authored
      Signed-off-by: 's avatarLiFeng <lifeng68@huawei.com>
    • Merge pull request #2019 from brauner/2017-12-11/fix_legacy_network_parser · 9f3b360c
      Stéphane Graber authored
      legacy confile: fix legacy network parser
    • legacy confile: fix legacy network parser · 4bc717d6
      Christian Brauner authored
      This fixes a bug introduced by:
      
      commit 94f0035b
      Author: Christian Brauner <christian.brauner@ubuntu.com>
      Date:   Thu Dec 7 15:07:26 2017 +0100
      
          coverity: #1425924
      
          remove logically dead condition
      Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
      
      Coverity's bug analysis is correct but my fix wasn't.
      
      This commit fixes a bunch of other bugs I just spotted as well.
      
      This unblocks #2009.
      Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
  2. 09 Dec, 2017 7 commits
  3. 08 Dec, 2017 1 commit
  4. 07 Dec, 2017 11 commits
  5. 06 Dec, 2017 15 commits