[LTP] [PATCH v3 2/5] Add cachestat01 test
Cyril Hrubis
chrubis@suse.cz
Tue Jul 23 12:40:03 CEST 2024
Hi!
Pushed with a two minor changes, thanks.
> +static void test_cached_pages(const unsigned int use_sync, const int num_pages)
> +{
> + int fd;
> +
> + tst_res(TINFO, "%s file synchronization", use_sync ? "Enable" : "Disable");
> + tst_res(TINFO, "Number of pages: %d", num_pages);
> +
> + memset(cs, 0, sizeof(struct cachestat));
> +
> + fd = SAFE_OPEN(FILENAME, O_RDWR | O_CREAT, 0600);
> +
> + for (int i = 0; i < num_pages; i++)
> + SAFE_WRITE(0, fd, page_data, page_size);
> +
> + if (use_sync)
> + fsync(fd);
> +
> + cs_range->off = 0;
> + cs_range->len = page_size * num_pages;
> +
I've added memset(cs, 0xff, sizeof(*cs)) here to make sure that the
structure is initialized with bogus data before the syscall. With that
we will make sure that the nr_dirty have been written to (the tst_bufers
are initialized to zero to begin with).
> + TST_EXP_PASS(cachestat(fd, cs_range, cs, 0));
> + print_cachestat(cs);
> +
> + TST_EXP_EQ_LI(cs->nr_cache + cs->nr_evicted, num_pages);
> +
> + if (use_sync)
> + TST_EXP_EQ_LI(cs->nr_dirty, 0);
> +
> + SAFE_CLOSE(fd);
> + SAFE_UNLINK(FILENAME);
> +}
> +
> +static void run(unsigned int use_sync)
> +{
> + for (int i = 0; i < 15; i++)
> + test_cached_pages(use_sync, 1 << i);
> +}
> +
> +static void setup(void)
> +{
> + page_size = (int)sysconf(_SC_PAGESIZE);
> +
> + page_data = SAFE_MALLOC(page_size);
> + memset(page_data, 'a', page_size);
> +}
> +
> +static void cleanup(void)
> +{
> + if (page_data)
> + free(page_data);
free(NULL) is no-op so I've removed the if ().
> +}
> +
> +static struct tst_test test = {
> + .test = run,
> + .tcnt = 2,
> + .setup = setup,
> + .cleanup = cleanup,
> + .needs_tmpdir = 1,
> + .min_kver = "6.5",
> + .mount_device = 1,
> + .mntpoint = MNTPOINT,
> + .all_filesystems = 1,
> + .skip_filesystems = (const char *const []) {
> + "fuse",
> + "tmpfs",
> + NULL
> + },
> + .bufs = (struct tst_buffers []) {
> + {&cs, .size = sizeof(struct cachestat)},
> + {&cs_range, .size = sizeof(struct cachestat_range)},
> + {}
> + },
> +};
>
> --
> 2.43.0
>
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
--
Cyril Hrubis
chrubis@suse.cz
More information about the ltp
mailing list