
On Wed, Jan 11, 2017 at 05:43:12PM +0100, Michal Privoznik wrote:
Other drivers (like qemu) would like to know if the namespaces are available therefore it makes sense to move this function to a shared module.
At the same time, this function had some default namespaces that are checked with every call. It is not necessary - let callers pass just those namespaces they are interested in.
With the move the function is renamed to virProcessNamespaceAvailable.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/libvirt_private.syms | 1 + src/lxc/lxc_container.c | 44 +---------------------------- src/lxc/lxc_container.h | 2 -- src/lxc/lxc_driver.c | 7 +++-- src/util/virprocess.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ src/util/virprocess.h | 10 +++++++ 6 files changed, 89 insertions(+), 47 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 9c74d35c4..d02d23b35 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -2275,6 +2275,7 @@ virProcessGetPids; virProcessGetStartTime; virProcessKill; virProcessKillPainfully; +virProcessNamespaceAvailable; virProcessRunInMountNamespace; virProcessSchedPolicyTypeFromString; virProcessSchedPolicyTypeToString; diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c index 32c0c3a4a..e5619b168 100644 --- a/src/lxc/lxc_container.c +++ b/src/lxc/lxc_container.c @@ -27,7 +27,6 @@ #include <config.h>
#include <fcntl.h> -#include <sched.h> #include <limits.h> #include <stdlib.h> #include <stdio.h> @@ -2265,7 +2264,7 @@ static int lxcContainerChild(void *data)
static int userns_supported(void) { - return lxcContainerAvailable(LXC_CONTAINER_FEATURE_USER) == 0; + return virProcessNamespaceAvailable(VIR_PROCESS_NAMESPACE_USER) == 0; }
static int userns_required(virDomainDefPtr def) @@ -2399,47 +2398,6 @@ int lxcContainerStart(virDomainDefPtr def, return pid; }
-ATTRIBUTE_NORETURN static int -lxcContainerDummyChild(void *argv ATTRIBUTE_UNUSED) -{ - _exit(0); -} - -int lxcContainerAvailable(int features) -{ - int flags = CLONE_NEWPID|CLONE_NEWNS|CLONE_NEWUTS| - CLONE_NEWIPC|SIGCHLD; - int cpid; - char *childStack; - char *stack; - int stacksize = getpagesize() * 4; - - if (features & LXC_CONTAINER_FEATURE_USER) - flags |= CLONE_NEWUSER; - - if (features & LXC_CONTAINER_FEATURE_NET) - flags |= CLONE_NEWNET;
These two constants need to be dropped from lxc_container.h now too. ACK if that's fixed. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://entangle-photo.org -o- http://search.cpan.org/~danberr/ :|