]>
Commit | Line | Data |
---|---|---|
9fc68fe3 | 1 | #!/bin/sh -e |
2ab697dc | 2 | |
71f0cd30 | 3 | # We're dealing with mount entries, so expand any symlink |
cd14d992 | 4 | LXC_ROOTFS_MOUNT=$(readlink -f ${LXC_ROOTFS_MOUNT}) |
71f0cd30 | 5 | |
2ab697dc | 6 | # /proc files |
7456f3b5 SG |
7 | if [ -d @LXCFSTARGETDIR@/proc/ ]; then |
8 | for entry in @LXCFSTARGETDIR@/proc/*; do | |
2ab697dc | 9 | [ -e "${LXC_ROOTFS_MOUNT}/proc/$(basename $entry)" ] || continue |
ff767ce4 | 10 | mount -n --bind $entry ${LXC_ROOTFS_MOUNT}/proc/$(basename $entry) |
7456f3b5 SG |
11 | done |
12 | fi | |
13 | ||
f51072f5 SG |
14 | |
15 | # Allow nesting lxcfs | |
16 | if [ -d ${LXC_ROOTFS_MOUNT}@LXCFSTARGETDIR@/ ]; then | |
17 | mount -n --bind @LXCFSTARGETDIR@ ${LXC_ROOTFS_MOUNT}@LXCFSTARGETDIR@/ | |
18 | fi | |
19 | ||
1edd4d20 | 20 | # no need for lxcfs cgroups if we have cgroup namespaces |
5f4744ea | 21 | [ -n "$LXC_CGNS_AWARE" ] && [ -f /proc/self/ns/cgroup ] && exit 0 |
1edd4d20 | 22 | |
358b8c7d SG |
23 | # Don't mess with containers that don't have /sys/fs/cgroup configured |
24 | # (lxc.mount.auto = cgroup:mixed) | |
25 | if touch ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/lxcfs; then | |
26 | rm ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/lxcfs | |
27 | else | |
28 | exit 0 | |
29 | fi | |
30 | ||
2ab697dc SG |
31 | # /sys/fs/cgroup files |
32 | if [ -d "${LXC_ROOTFS_MOUNT}/sys/fs/cgroup" ]; then | |
2ab697dc | 33 | if [ -d @LXCFSTARGETDIR@/cgroup ]; then |
77171c86 SG |
34 | # Cleanup existing mounts |
35 | for entry in ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/*; do | |
2ab697dc | 36 | DEST=$(basename $entry) |
77171c86 SG |
37 | |
38 | if [ "${DEST}" = "cgmanager" ]; then | |
39 | continue | |
2ab697dc | 40 | fi |
7456f3b5 | 41 | |
77171c86 | 42 | if [ ! -d "${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/${DEST}" ]; then |
8e8b8658 SH |
43 | continue |
44 | fi | |
59c982dc | 45 | |
7f377c96 | 46 | while grep -q "${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/${DEST}" /proc/self/mountinfo; do |
77171c86 | 47 | grep "${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/${DEST}" /proc/self/mountinfo | cut -d' ' -f5 | while read line; do |
7f377c96 | 48 | [ -e "${line}" ] && umount -l "${line}" || true |
77171c86 SG |
49 | done |
50 | done | |
51 | ||
52 | rm -Rf ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/${DEST} | |
53 | done | |
54 | ||
55 | # Mount the new entries | |
56 | for entry in @LXCFSTARGETDIR@/cgroup/*; do | |
57 | DEST=$(basename $entry) | |
58 | if [ "$DEST" = "name=systemd" ]; then | |
59 | DEST="systemd" | |
60 | fi | |
61 | ||
62 | if [ ! -d ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/${DEST} ]; then | |
63 | mkdir ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/${DEST} | |
38273402 | 64 | fi |
59c982dc | 65 | |
ff767ce4 | 66 | mount -n --bind $entry ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/$DEST |
8d00b97a SH |
67 | |
68 | # make sure that cpu,cpuacct shows up as cpu and cpuacct | |
69 | # separately, else systemd is unhappy | |
f0683e5c | 70 | if echo $DEST | grep -q ","; then |
8d00b97a SH |
71 | arr=$(echo $DEST | tr "," "\n") |
72 | for single in $arr | |
73 | do | |
38273402 | 74 | if [ ! -L ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/$single ]; then |
59c982dc | 75 | ln -s $DEST ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/$single |
38273402 | 76 | fi |
8d00b97a SH |
77 | done |
78 | fi | |
2ab697dc | 79 | done |
7456f3b5 SG |
80 | fi |
81 | fi | |
2ab697dc SG |
82 | |
83 | exit 0 |