From bab929022f4f4bba77439c63d130c833595758b6 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 9 Jun 2026 22:12:09 +0300 Subject: test: add deterministic ioctl coverage and quotactl_fd in mountfs ioctl (FamilyFS, KindFd@arg0) previously only fired implicitly via the Go runtime/terminal. Add scenario_ioctl.go issuing a benign FIONREAD ioctl on an opened temp file (registered as ioctl-basic) and ioctl_test.go asserting enter_ioctl resolves to the temp file path, mirroring the fcntl suite. quotactl_fd (FamilyFS, KindFd@arg0) had no coverage while its sibling quotactl was tested in mountfs. Add a best-effort RawSyscall6 SYS_QUOTACTL_FD call on an fd opened on the mount point in scenario_mountfs.go, extend mountfsTraceArgs, and assert enter_quotactl_fd (MinCount>=1). The sys_enter tracepoint fires on kernel entry regardless of privilege/quota support. Co-Authored-By: Claude Opus 4.8 --- integrationtests/ioctl_test.go | 17 +++++++++++++++++ integrationtests/mountfs_test.go | 6 +++++- 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 integrationtests/ioctl_test.go (limited to 'integrationtests') diff --git a/integrationtests/ioctl_test.go b/integrationtests/ioctl_test.go new file mode 100644 index 0000000..9dbebf7 --- /dev/null +++ b/integrationtests/ioctl_test.go @@ -0,0 +1,17 @@ +package integrationtests + +import "testing" + +// TestIoctlBasic asserts that the ioctl-basic scenario deterministically fires +// the enter_ioctl tracepoint. ioctl is KindFd (fd@arg0); the fd resolves to the +// scenario's temp file, so we assert the path as well. Mirrors fcntl_test.go. +func TestIoctlBasic(t *testing.T) { + runScenario(t, "ioctl-basic", []ExpectedEvent{ + { + PathContains: "ioctlfile.txt", + Tracepoint: "enter_ioctl", + Comm: "ioworkload", + MinCount: 1, + }, + }) +} diff --git a/integrationtests/mountfs_test.go b/integrationtests/mountfs_test.go index d50706f..69a19fd 100644 --- a/integrationtests/mountfs_test.go +++ b/integrationtests/mountfs_test.go @@ -4,7 +4,7 @@ import "testing" var mountfsTraceArgs = []string{ "-trace-syscalls", - "mount,umount,move_mount,fsopen,fsconfig,fspick,open_tree,fsmount,pivot_root,quotactl,statmount,listmount,listns,swapon,swapoff", + "mount,umount,move_mount,fsopen,fsconfig,fspick,open_tree,fsmount,pivot_root,quotactl,quotactl_fd,statmount,listmount,listns,swapon,swapoff", } func TestMountFsManagementSyscalls(t *testing.T) { @@ -23,6 +23,10 @@ func TestMountFsManagementSyscalls(t *testing.T) { {Tracepoint: "enter_fsmount", MinCount: 1}, {Tracepoint: "enter_pivot_root", MinCount: 1}, {Tracepoint: "enter_quotactl", MinCount: 1}, + // quotactl_fd (KindFd, fd@arg0) is the fd-based sibling of quotactl, + // issued best-effort on an fd opened on the mount point. Its sys_enter_ + // tracepoint fires on kernel entry regardless of privilege/quota support. + {Tracepoint: "enter_quotactl_fd", MinCount: 1}, {Tracepoint: "enter_statmount", MinCount: 1}, {Tracepoint: "enter_listmount", MinCount: 1}, {Tracepoint: "enter_listns", MinCount: 1}, -- cgit v1.2.3