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.
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 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(-)