Commit 0d9f8e18 by Daniel Lezcano Committed by Daniel Lezcano

detect a cgroup named 'lxc'

This patch makes lxc to detect a specific cgroup dedicated to lxc which is mounted with the lxc name. That allows to mount different cgroup in different places with different options (aka subsystems) and assign one to be used by lxc. If no such mount point is found, the first cgroup mount point is used. Signed-off-by: 's avatarDaniel Lezcano <dlezcano@fr.ibm.com>
parent 2b31f553
......@@ -126,27 +126,36 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
</programlisting>
<para>
For the moment the easiest way to have all the features in the
kernel is to use the git tree at:
<systemitem>
git://git.kernel.org/pub/scm/linux/kernel/git/daveh/linux-2.6-lxc.git
</systemitem>
But the kernel version >= 2.6.27 shipped with the distros, may
The kernel version >= 2.6.27 shipped with the distros, will
work with <command>lxc</command>, this one will have less
functionalities but enough to be interesting.
The planned kernel version which <command>lxc</command> should
be fully functionaly is 2.6.29.
With the kernel 2.6.29, <command>lxc</command> is fully
functional.
</para>
<para>
Before using the <command>lxc</command>, your system should be
configured with the file capabilities, otherwise you will need
to run the <command>lxc</command> commands as root. The
control group should be mounted anywhere, eg:
<command>mount -t cgroup cgroup /cgroup</command>
to run the <command>lxc</command> commands as root.
</para>
<para>
The control group can be mounted anywhere, eg:
<command>mount -t cgroup cgroup /cgroup</command>.
If you want to dedicate a specific cgroup mount point
for <command>lxc</command>, that is to have different cgroups
mounted at different places with different options but
let <command>lxc</command> to use one location, you can bind
the mount point with the <option>lxc</option> name, eg:
<command>mount -t cgroup lxc /cgroup4lxc</command> or
<command>mount -t cgroup -ons,cpuset,freezer,devices
lxc /cgroup4lxc</command>
</para>
</refsect1>
<refsect1>
......
......@@ -58,11 +58,20 @@ static int get_cgroup_mount(const char *mtab, char *mnt)
}
while ((mntent = getmntent(file))) {
if (strcmp(mntent->mnt_type, "cgroup"))
continue;
strcpy(mnt, mntent->mnt_dir);
err = 0;
break;
/* there is a cgroup mounted named "lxc" */
if (!strcmp(mntent->mnt_fsname, "lxc") &&
!strcmp(mntent->mnt_type, "cgroup")) {
strcpy(mnt, mntent->mnt_dir);
err = 0;
break;
}
/* fallback to the first non-lxc cgroup found */
if (!strcmp(mntent->mnt_type, "cgroup") && err) {
strcpy(mnt, mntent->mnt_dir);
err = 0;
}
};
fclose(file);
......@@ -87,8 +96,7 @@ int lxc_rename_nsgroup(const char *name, pid_t pid)
ret = rename(oldname, newname);
if (ret)
SYSERROR("failed to rename cgroup %s->%s",
oldname, newname);
SYSERROR("failed to rename cgroup %s->%s", oldname, newname);
return ret;
}
......@@ -110,8 +118,7 @@ int lxc_link_nsgroup(const char *name)
unlink(lxc);
ret = symlink(nsgroup, lxc);
if (ret)
SYSERROR("failed to create symlink %s->%s",
nsgroup, lxc);
SYSERROR("failed to create symlink %s->%s", nsgroup, lxc);
return ret;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment