[prev in list] [next in list] [prev in thread] [next in thread] 

List:       libvirt-users
Subject:    Re: [libvirt-users] Problem about lxc-enter-namespace interface
From:       Gao feng <gaofeng () cn ! fujitsu ! com>
Date:       2013-11-14 11:30:11
Message-ID: 5284B443.7040803 () cn ! fujitsu ! com
[Download RAW message or body]

On 11/14/2013 05:40 PM, hzguanqiang@corp.netease.com wrote:
> On 2013-11-14 16:40 , Gao feng <mailto:gaofeng@cn.fujitsu.com> wrote:
> 
> On 11/14/2013 03:09 PM, hzguanqiang@corp.netease.com wrote:
> > On 2013-11-14 15:03 , Gao feng <mailto:gaofeng@cn.fujitsu.com> wrote:
> > 
> > On 11/14/2013 02:57 PM, hzguanqiang@corp.netease.com wrote:
> > > On 2013-11-14 14:17 , Gao feng <mailto:gaofeng@cn.fujitsu.com> wrote:
> > > 
> > > On 11/14/2013 01:52 PM, hzguanqiang@corp.netease.com wrote:
> > > > On 2013-11-14 13:41 , Gao feng <mailto:gaofeng@cn.fujitsu.com> wrote:
> > > > 
> > > > On 11/14/2013 01:24 PM, Gao feng wrote:
> > > > > On 11/14/2013 10:59 AM, hzguanqiang@corp.netease.com wrote:
> > > > > > Hi experts,
> > > > > > 
> > > > > > When I test lxc-enter-namespace interface, it turned out such an error:
> > > > > > 
> > > > > > hzguanqiang@debian:~$ <mailto:hzguanqiang@debian:~$> vir version
> > > > > > Compiled against library: libvirt 1.1.4
> > > > > > Using library: libvirt 1.1.4
> > > > > > Using API: LXC 1.1.4
> > > > > > Running hypervisor: LXC 3.9.6
> > > > > > 
> > > > > > hzguanqiang@debian:~$ <mailto:hzguanqiang@debian:~$> vir list
> > > > > > Id    Name                           State
> > > > > > ----------------------------------------------------
> > > > > > 1544  instance-00000015              running
> > > > > > 
> > > > > > hzguanqiang@debian:~$ <mailto:hzguanqiang@debian:~$> vir \
> > > > > >                 lxc-enter-namespace 1544 --noseclabel /bin/df -hl
> > > > > > error: Cannot get namespaces for 1545: Function not implemented
> > > > > > 
> > > > > > hzguanqiang@debian:~$ <mailto:hzguanqiang@debian:~$> ls /proc/self/ns
> > > > > > ipc  mnt  net  pid  user  uts
> > > > > > 
> > > > > > What's the problem?
> > > > > > 
> > > > > 
> > > > > Does your system have system call setns?
> > > > 
> > > > grep setns /proc/kallsyms
> > > > and
> > > > grep setns the config.log of libvirt.
> > > > 
> > > > 
> > > > Hi, Gaofeng, thanks for your help. The info you want are:
> > > > 
> > > 
> > > Hi,
> > > 
> > > > hzguanqiang@debian:~/github/libvirt$ \
> > > > <mailto:hzguanqiang@debian:~/github/libvirt$> sudo grep setns \
> > > > /var/log/libvirt/libvirtd.log
> > > 
> > > config.log not libvirtd.log, or you can exec "./configure | grep setns" under \
> > > libvirt source directory. 
> > > > hzguanqiang@debian:~/github/libvirt$ \
> > > > <mailto:hzguanqiang@debian:~/github/libvirt$> grep setns /proc/kallsyms \
> > > > ffffffff8105b993 T sys_setns 
> > > > What I found really strange is that the error info returned by the command.
> > > > hzguanqiang@debian:~$ <mailto:hzguanqiang@debian:~$> vir lxc-enter-namespace \
> > > >                 1544 --noseclabel /bin/df -hl
> > > > error: Cannot get namespaces for 1545: Function not implemented
> > > > The instance id is 1544, but the error info hint cannot get ns for 1545.
> > > > 
> > > 
> > > we have two libvirt lxc related process at the first start,
> > > one is controller process on host(pid 1544), the other is the container's init \
> > > task(pid 1545). since lxc-enter-namespace wants to exec cmd in container \
> > > environment. so libvirt will try to get the namespaces of container's init \
> > > task. 
> > > The problem is libvirt/autoconf thinks your system doesn't support setns system \
> > > call... 
> > > > The libvirt code of mine is of version 1.1.4 from github (git checkout v1.1.4 \
> > > > -b stable1.1.4 ) 
> > > 
> > > I don't know if the libvirt git repo on github is the right thing, but As I \
> > > know this repo git://libvirt.org/libvirt.git is official.
> > > 
> > > Please have a try.
> > > 
> > > 
> > > Thanks
> > > 
> > > 
> > > Sorry, I made a mistake about the libvirt repo, the code I used is just from \
> > > the official repo. Maybe it's problem of my kernel. I've tried to build libvirt \
> > > from code of master branch. The mistake is just the same.
> > > 
> > 
> > what's result of "./configure | grep setns"
> > 
> > 
> > 
> > 
> > The result is:
> > hzguanqiang@debian:~/github/libvirt$ \
> > <mailto:hzguanqiang@debian:~/github/libvirt$> ./configure | grep setns checking \
> > for setns... no 
> > Is there something need to configure for setns system call? Or something is wrong \
> > with my kernel? 
> 
> Seem your kernel has setns, but autoconf doesn't recognise it.
> you can modify the config.h, change as below
> #define HAVE_SETNS 1
> and make && make install
> 
> 
> Hi gaofeng,
> I tried as you said, but it report an error when do make operation as following:
> 
> util/virprocess.c: In function 'virProcessSetNamespaces':
> util/virprocess.c:568:9: error: implicit declaration of function 'setns' \
> [-Werror=implicit-function-declaration] util/virprocess.c:568:9: error: nested \
>                 extern declaration of 'setns' [-Werror=nested-externs]
> cc1: all warnings being treated as errors
> make[3]: *** [util/libvirt_util_la-virprocess.lo] Error 1
> 
> I think something must be wrong about setns system call in my environment.
> But still thanks very much for your help.
> 

maybe you need to do make headers_install or make header_install_all under kernel \
source directory, or use apt-get install linux-headers-$(uname -r).


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic