Message ID | 20230815155612.2535947-1-andre.przywara@arm.com (mailing list archive) |
---|---|
Headers | show |
Series | selftests: cachestat: fix build and run on older kernels | expand |
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 >