]> git.proxmox.com Git - mirror_lxcfs.git/blob - share/lxc.mount.hook.in
don't use sh -u
[mirror_lxcfs.git] / share / lxc.mount.hook.in
1 #!/bin/sh -e
2
3 # Don't mess with containers that don't have /sys/fs/cgroup configured
4 # (lxc.mount.auto = cgroup:mixed)
5
6 if touch ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/lxcfs; then
7 rm ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/lxcfs
8 else
9 exit 0
10 fi
11
12 # /proc files
13 if [ -d @LXCFSTARGETDIR@/proc/ ]; then
14 for entry in @LXCFSTARGETDIR@/proc/*; do
15 [ -e "${LXC_ROOTFS_MOUNT}/proc/$(basename $entry)" ] || continue
16 mount -n --bind $entry ${LXC_ROOTFS_MOUNT}/proc/$(basename $entry)
17 done
18 fi
19
20 # no need for lxcfs cgroups if we have cgroup namespaces
21 [ -n "$LXC_CGNS_AWARE" ] && [ -f /proc/self/ns/cgroup ] && exit 0
22
23 # /sys/fs/cgroup files
24 if [ -d "${LXC_ROOTFS_MOUNT}/sys/fs/cgroup" ]; then
25 if [ -d @LXCFSTARGETDIR@/cgroup ]; then
26 for entry in @LXCFSTARGETDIR@/cgroup/*; do
27 DEST=$(basename $entry)
28 if [ "$DEST" = "name=systemd" ]; then
29 DEST="systemd"
30 fi
31
32 if mountpoint -q ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/$DEST; then
33 continue
34 fi
35
36 if [ ! -d ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/$DEST ]; then
37 mkdir ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/$DEST
38 fi
39
40 mount -n --bind $entry ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/$DEST
41
42 # make sure that cpu,cpuacct shows up as cpu and cpuacct
43 # separately, else systemd is unhappy
44 if echo $DEST | grep -q ","; then
45 arr=$(echo $DEST | tr "," "\n")
46 for single in $arr
47 do
48 if [ ! -L ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/$single ]; then
49 ln -s $DEST ${LXC_ROOTFS_MOUNT}/sys/fs/cgroup/$single
50 fi
51 done
52 fi
53 done
54
55 if [ -d ${LXC_ROOTFS_MOUNT}@LXCFSTARGETDIR@/ ]; then
56 mount -n --bind @LXCFSTARGETDIR@ ${LXC_ROOTFS_MOUNT}@LXCFSTARGETDIR@/
57 fi
58 fi
59 fi
60
61 exit 0