[LTP] [PATCH v2 2/4] syscalls/statx10: Add basic test for STATX_DIOALIGN on regular file
Eric Biggers
ebiggers@kernel.org
Mon Apr 3 19:01:11 CEST 2023
On Mon, Apr 03, 2023 at 06:44:34PM +0800, Yang Xu wrote:
> +static void verify_statx(void)
> +{
> + struct statx buf;
> +
> + memset(&buf, 0, sizeof(buf));
> + TST_EXP_PASS(statx(AT_FDCWD, TESTFILE, 0, STATX_DIOALIGN, &buf),
> + "statx(AT_FDCWD, %s, 0, STATX_DIOALIGN, &buf)", TESTFILE);
> +
> + if (!(buf.stx_mask & STATX_DIOALIGN)) {
> + tst_res(TCONF, "STATX_DIOALIGN is not supported until linux 6.1");
> + return;
> + }
> +
> + if (buf.stx_dio_mem_align != 0)
> + tst_res(TPASS, "stx_dio_mem_align:%u", buf.stx_dio_mem_align);
> + else
> + tst_res(TFAIL, "don't get stx_dio_mem_align on supported dio fs");
> +
> + if (buf.stx_dio_offset_align != 0)
> + tst_res(TPASS, "stx_dio_offset_align:%u", buf.stx_dio_offset_align);
> + else
> + tst_res(TFAIL, "don't get stx_dio_offset_align on supported dio fs");
> +}
> +
> +static void setup(void)
> +{
> + if (strcmp(tst_device->fs_type, "xfs") && strcmp(tst_device->fs_type, "ext4"))
> + tst_brk(TCONF, "This test only supports ext4 and xfs");
> +
> + SAFE_FILE_PRINTF(TESTFILE, "AAAA");
> + fd = open(TESTFILE, O_RDWR | O_DIRECT);
> + if (fd == -1 && errno == EINVAL)
> + tst_brk(TCONF, "The regular file is not on a filesystem that support DIO");
> +}
On ext4, files that use certain filesystem features (data journalling,
encryption, and verity) fall back to buffered I/O. This test will fail when
passed such a file, as it assumes that DIO doesn't fall back to buffered I/O.
How is it guaranteed that such a file is not passed to this test?
- Eric
More information about the ltp
mailing list