On Tue, Aug 15, 2023 at 8:56 AM Andre Przywara andre.przywara@arm.com wrote:
I ran all kernel selftests on some test machine, and stumbled upon cachestat failing (among others). Those patches fix the cachestat test compilation and run on older kernels.
Also I found that the but-last test (on a normal file) fails when run on a tmpfs mounted directory, as it happens on an initramfs-only system, or when the current directory happens to be /dev/shm or /tmp: # Create/open tmpfilecachestat # Cachestat call returned 0 # Using cachestat: Cached: 4, Dirty: 4, Writeback: 0, Evicted: 0, Recently Evicted: 0 # Cachestat call (after fsync) returned 0 # Using cachestat: Cached: 4, Dirty: 4, Writeback: 0, Evicted: 0, Recently Evicted: 0 # Number of dirty should be zero after fsync. not ok 6 cachestat fails with normal file
That same test binary succeeds on the same machine right afterwards if the current directory is changed to an ext4 filesystem.
Ah, if I recall correctly, these kinds of fs have no-op fsync, correct? Something along the line of: https://github.com/torvalds/linux/blob/91aa6c4/mm/shmem.c#L4111 The fsync logic would fail indeed. Thanks for pointing that out!
I don't really know if this is expected, and whether we should try to figure out if the test file lives on a tmpfs filesystem, or whether the
This would be nice. I think there's a userspace method to check this, right? There's a TMPFS_MAGIC here - not sure if relevant:
https://man7.org/linux/man-pages/man2/statfs.2.html
test itself is not strict enough, and requires more "flushing" (drop_caches?) to cover tmpfs directories as well.
Any ideas how to fix this would be appreciated.
Cheers, Andre
Andre Przywara (3): selftests: cachestat: properly link in librt selftests: cachestat: use proper syscall number macro selftests: cachestat: test for cachestat availability
tools/testing/selftests/cachestat/Makefile | 2 +- .../selftests/cachestat/test_cachestat.c | 29 +++++++++++++++---- 2 files changed, 25 insertions(+), 6 deletions(-)
-- 2.25.1