summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry/fsimpl/sys/sys_test.go
diff options
context:
space:
mode:
authorRahat Mahmood <rahat@google.com>2021-09-23 15:50:08 -0700
committergVisor bot <gvisor-bot@google.com>2021-09-23 15:54:02 -0700
commit2b776633303f696a552d41ead53b33e594c812d1 (patch)
tree713eff4f409c08387fdf7655964af550bd37bc41 /pkg/sentry/fsimpl/sys/sys_test.go
parent93ac1557751a0c17a85f49d715b96833acf39dc6 (diff)
Create the cgroupfs mount point in sysfs.
Create the /sys/fs/cgroup directory when cgroups are available. This creates the empty directory to serve as the mountpoint, actually mounting cgroups is left to the launcher/userspace. This is consistent with Linux behaviour. Without this mountpoint, getdents(2) on /sys/fs indicates an empty directory even if the launcher mounts cgroupfs at /sys/fs/cgroup. The launcher can't create the mountpoint directory since sysfs doesn't support mkdir. PiperOrigin-RevId: 398596698
Diffstat (limited to 'pkg/sentry/fsimpl/sys/sys_test.go')
-rw-r--r--pkg/sentry/fsimpl/sys/sys_test.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/pkg/sentry/fsimpl/sys/sys_test.go b/pkg/sentry/fsimpl/sys/sys_test.go
index 0a0d914cc..0c46a3a13 100644
--- a/pkg/sentry/fsimpl/sys/sys_test.go
+++ b/pkg/sentry/fsimpl/sys/sys_test.go
@@ -87,3 +87,17 @@ func TestSysRootContainsExpectedEntries(t *testing.T) {
"power": linux.DT_DIR,
})
}
+
+func TestCgroupMountpointExists(t *testing.T) {
+ // Note: The mountpoint is only created if cgroups are available. This is
+ // the VFS2 implementation of sysfs and the test runs with VFS2 enabled, so
+ // we expect to see the mount point unconditionally.
+ s := newTestSystem(t)
+ defer s.Destroy()
+ pop := s.PathOpAtRoot("/fs")
+ s.AssertAllDirentTypes(s.ListDirents(pop), map[string]testutil.DirentType{
+ "cgroup": linux.DT_DIR,
+ })
+ pop = s.PathOpAtRoot("/fs/cgroup")
+ s.AssertAllDirentTypes(s.ListDirents(pop), map[string]testutil.DirentType{ /*empty*/ })
+}