From 68a4f67e919c4580ead80729b183506997627fbd Mon Sep 17 00:00:00 2001 From: Sapan Bhatia Date: Mon, 3 Jun 2013 15:24:27 -0400 Subject: [PATCH] Mount /proc inside slice. --- lxcsu | 7 +++++-- setns.c | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lxcsu b/lxcsu index 83f1144..2f1c0af 100755 --- a/lxcsu +++ b/lxcsu @@ -136,10 +136,13 @@ def main (): setns.chcontext('/proc/%s/ns/net'%pid) if (not options.mntns): - open('/proc/lxcsu','w').write(pid) + setns.chcontext('/proc/%s/ns/mnt'%pid) if (not options.pidns): - open('/proc/pidsu','w').write(pid) + setns.chcontext('/proc/%s/ns/pid'%pid) + + if (!os.access('/proc/self'): + setns.proc_mount() # cgroups is not yet LXC-safe, so we need to use the course grained access control # strategy of unmounting the filesystem diff --git a/setns.c b/setns.c index 776804d..fded30b 100644 --- a/setns.c +++ b/setns.c @@ -2,6 +2,7 @@ #include #include #include +#include static PyObject * chfscontext(PyObject *self, PyObject *args) @@ -27,6 +28,16 @@ chfscontext(PyObject *self, PyObject *args) out: return Py_BuildValue("i", sts); } + +static PyObject * +proc_mount(PyObject *self, PyObject *args) +{ + int sts; + sts = mount("none","/proc","procfs",0,NULL); + + return Py_BuildValue("i", sts); +} + static PyObject * chcontext(PyObject *self, PyObject *args) { @@ -54,6 +65,7 @@ out: static PyMethodDef SetnsMethods[] = { + {"proc_mount", proc_mount, METH_VARARGS, "Mount a volume via the mount system call."}, {"chcontext", chcontext, METH_VARARGS, "Switch into an lxc container."}, {"chfscontext", chfscontext, METH_VARARGS, "Switch into an lxc container."}, {NULL, NULL, 0, NULL} -- 2.43.0