1. 27 1月, 2016 1 次提交
    • D
      lxc: don't try to hide parent cgroups inside container · dc576025
      Daniel P. Berrange 提交于
      On the host when we start a container, it will be
      placed in a cgroup path of
      
         /machine.slice/machine-lxc\x2ddemo.scope
      
      under /sys/fs/cgroup/*
      
      Inside the containers' namespace we need to setup
      /sys/fs/cgroup mounts, and currently will bind
      mount /machine.slice/machine-lxc\x2ddemo.scope on
      the host to appear as / in the container.
      
      While this may sound nice, it confuses applications
      dealing with cgroups, because /proc/$PID/cgroup
      now does not match the directory in /sys/fs/cgroup
      
      This particularly causes problems for systems and
      will make it create repeated path components in
      the cgroup for apps run in the container eg
      
        /machine.slice/machine-lxc\x2ddemo.scope/machine.slice/machine-lxc\x2ddemo.scope/user.slice/user-0.slice/session-61.scope
      
      This also causes any systemd service that uses
      sd-notify to fail to start, because when systemd
      receives the notification it won't be able to
      identify the corresponding unit it came from.
      In particular this break rabbitmq-server startup
      
      Future kernels will provide proper cgroup namespacing
      which will handle this problem, but until that time
      we should not try to play games with hiding parent
      cgroups.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      dc576025
  2. 18 11月, 2015 2 次提交
    • R
      lxc: Bind mount container TTYs · 370707a7
      Richard Weinberger 提交于
      Instead of creating symlinks, bind mount the devices to
      /dev/pts/XY.
      Using bind mounts it is no longer needed to add pts devices
      to files like /etc/securetty.
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      370707a7
    • R
      lxc: Don't make container's TTY a controlling TTY · ea542455
      Richard Weinberger 提交于
      Userspace does not expect that the initial console
      is a controlling TTY. systemd can deal with that, others not.
      On sysv init distros getty will fail to spawn a controlling on
      /dev/console or /dev/tty1. Which will cause to whole container
      to reboot upon ctrl-c.
      
      This patch changes the behavior of libvirt to match the kernel
      behavior where the initial TTY is also not controlling.
      
      The only user visible change should be that a container with
      bash as PID 1 would complain. But this matches exactly the kernel
      be behavior with init=/bin/bash.
      To get a controlling TTY for bash just run "setsid /bin/bash".
      Signed-off-by: NRichard Weinberger <richard@nod.at>
      ea542455
  3. 05 9月, 2015 1 次提交
    • J
      lxc: Avoid Coverity SIZEOF_MISMATCH · 11822fff
      John Ferlan 提交于
      Commit id '692e9fac' used virProcessSetNamespaces instead of inlining
      the similar functionality; however, Coverity notes that the function
      prototype expects a size_t value and not an enum and complains. So,
      just typecast the enum as a size_t to avoid the noise.
      11822fff
  4. 27 8月, 2015 3 次提交
  5. 26 8月, 2015 2 次提交
    • D
      lxc: ensure setns() syscall is defined · eff95ac8
      Daniel P. Berrange 提交于
      Older versions of glibc don't provide the setns() syscall
      function wrapper, so we must define it ourselves to prevent
      build failure on old distros.
      Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
      eff95ac8
    • I
      lxc: Inherit namespace feature · c27553b6
      ik.nitk 提交于
      This patch adds feature for lxc containers to inherit namespaces.
      This is very similar to what lxc-tools or docker provides.  Look
      for "man lxc-start" and you will find that you can pass command
      args as [ --share-[net|ipc|uts] name|pid ]. Or check out docker
      networking option in which you can give --net=container:NAME_or_ID
      as an option for sharing +namespace.
      
      >From this patch you can add extra libvirt option to share
      namespace in following way.
      
       <lxc:namespace>
         <lxc:sharenet type='netns' value='red'/>
         <lxc:shareipc type='pid' value='12345'/>
         <lxc:shareuts type='name' value='container1'/>
       </lxc:namespace>
      
      The netns option is specific to sharenet. It can be used to
      inherit from existing network namespace.
      
      Co-authored: Daniel P. Berrange <berrange@redhat.com>
      c27553b6
  6. 16 6月, 2015 1 次提交
  7. 07 5月, 2015 1 次提交
  8. 27 1月, 2015 1 次提交
    • D
      lxc: more logging during startup paths · e4fc4f0c
      Daniel P. Berrange 提交于
      Add more logging to the lxc controller and container files to
      facilitate debugging startup problems. Also make it clear when
      the container is going to close stdout and thus no longer do
      any logging.
      e4fc4f0c
  9. 16 1月, 2015 1 次提交
  10. 12 1月, 2015 1 次提交
  11. 06 1月, 2015 3 次提交
  12. 10 12月, 2014 1 次提交
    • C
      lxc: give RW access to /proc/sys/net/ipv[46] to containers · ba9b7252
      Cédric Bosdonnat 提交于
      Some programs want to change some values for the network interfaces
      configuration in /proc/sys/net/ipv[46] folders. Giving RW access on them
      allows wicked to work on openSUSE 13.2+.
      
      Reusing the lxcNeedNetworkNamespace function to tell
      lxcContainerMountBasicFS if the netns is disabled. When no netns is
      set up, then we don't mount the /proc/sys/net/ipv[46] folder RW as
      these would provide full access to the host NICs config.
      ba9b7252
  13. 28 11月, 2014 1 次提交
    • J
      Fix usage of virReportSystemError · 9340528a
      Jiri Denemark 提交于
      virReportSystemError is reserved for reporting system errors, calling it
      with VIR_ERR_* error codes produces error messages that do not make any
      sense, such as
      
          internal error: guest failed to start: Kernel doesn't support user
          namespace: Link has been severed
      
      We should prohibit wrong usage with a syntax-check rule.
      Signed-off-by: NJiri Denemark <jdenemar@redhat.com>
      9340528a
  14. 25 11月, 2014 2 次提交
    • C
      lxc: don't unmount subtree if it contains the source of the mount · e50457dd
      Cédric Bosdonnat 提交于
      The typical case where we had a problem is with such a filesystem
      definition as created by virt-sandbox-service:
      
          <filesystem type='bind' accessmode='passthrough'>
            <source dir='/var/lib/libvirt/filesystems/mysshd/var'/>
            <target dir='/var'/>
          </filesystem>
      
      In this case, we don't want to unmount the /var subtree or we may
      loose the access to the source folder.
      e50457dd
    • C
      lxc: be more patient while resolving symlinks · 72fecf18
      Cédric Bosdonnat 提交于
      Resolving symlinks can fail before mounting any file system if one file
      system depends on another being mounted. Symlinks are now resolved in
      two passes:
      
        * Before any file system is mounted, but then we are more gentle if
          the source path can't be accessed
        * Right before mounting a file system, so that we are sure that we
          have the resolved path... but then if it can't be accessed we raise
          an error.
      72fecf18
  15. 15 11月, 2014 1 次提交
  16. 04 11月, 2014 1 次提交
  17. 31 10月, 2014 1 次提交
  18. 04 9月, 2014 2 次提交
  19. 23 7月, 2014 4 次提交
    • J
      Introduce virTristateSwitch enum · 3227e17d
      Ján Tomko 提交于
      For the values "default", "on", "off"
      
      Replaces
      virDeviceAddressPCIMulti
      virDomainFeatureState
      virDomainIoEventFd
      virDomainVirtioEventIdx
      virDomainDiskCopyOnRead
      virDomainMemDump
      virDomainPCIRombarMode
      virDomainGraphicsSpicePlaybackCompression
      3227e17d
    • P
      Fix build after 47e5b5ae · 0e6cacc4
      Peter Krempa 提交于
      The patch described above introduced two problems caught by the compiler
      and thus breaking the build.
      
      One of the problems was comparison of unsigned with < 0 and the second
      one jumped a variable init.
      0e6cacc4
    • C
      lxc: allow to keep or drop capabilities · 47e5b5ae
      Cédric Bosdonnat 提交于
      Added <capabilities> in the <features> section of LXC domains
      configuration. This section can contain elements named after the
      capabilities like:
      
        <mknod state="on"/>, keep CAP_MKNOD capability
        <sys_chroot state="off"/> drop CAP_SYS_CHROOT capability
      
      Users can restrict or give more capabilities than the default using
      this mechanism.
      47e5b5ae
    • C
      LXC: create a bind mount for sysfs when enable userns but disable netns · a86b6215
      Chen Hanxiao 提交于
      kernel commit 7dc5dbc879bd0779924b5132a48b731a0bc04a1e
      forbid us doing a fresh mount for sysfs
      when enable userns but disable netns.
      This patch will create a bind mount in this senario.
      Signed-off-by: NChen Hanxiao <chenhanxiao@cn.fujitsu.com>
      a86b6215
  20. 18 7月, 2014 1 次提交
  21. 03 7月, 2014 1 次提交
  22. 25 3月, 2014 1 次提交
  23. 18 3月, 2014 1 次提交
  24. 10 3月, 2014 1 次提交
  25. 04 3月, 2014 1 次提交
    • E
      util: make it easier to grab only regular process exit · c72e76c3
      Eric Blake 提交于
      Right now, a caller waiting for a child process either requires
      the child to have status 0, or must use WIFEXITED() and friends
      itself.  But in many cases, we want the middle ground of treating
      fatal signals as an error, and directly accessing the normal exit
      value without having to use WEXITSTATUS(), in order to easily
      detect an expected non-zero exit status.  This adds the middle
      ground to the low-level virProcessWait; the next patch will add
      it to virCommand.
      
      * src/util/virprocess.h (virProcessWait): Alter signature.
      * src/util/virprocess.c (virProcessWait): Add parameter.
      (virProcessRunInMountNamespace): Adjust caller.
      * src/util/vircommand.c (virCommandWait): Likewise.
      * src/util/virfile.c (virFileAccessibleAs): Likewise.
      * src/lxc/lxc_container.c (lxcContainerHasReboot)
      (lxcContainerAvailable): Likewise.
      * daemon/libvirtd.c (daemonForkIntoBackground): Likewise.
      * tools/virt-login-shell.c (main): Likewise.
      * tools/virsh-domain.c (cmdLxcEnterNamespace): Likewise.
      * tests/testutils.c (virtTestCaptureProgramOutput): Likewise.
      * tests/commandtest.c (test23): Likewise.
      Signed-off-by: NEric Blake <eblake@redhat.com>
      c72e76c3
  26. 20 2月, 2014 1 次提交
  27. 13 2月, 2014 1 次提交
  28. 18 12月, 2013 1 次提交
  29. 16 12月, 2013 1 次提交