Re: [PATCH] btrfs: add test for encoded reads

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]



On 11.11.24 15:56, Mark Harmstone wrote:
> Add btrfs/333 and its helper programs btrfs_encoded_read and
> btrfs_encoded_write, in order to test encoded reads.
> 
> We use the BTRFS_IOC_ENCODED_WRITE ioctl to write random data into a
> compressed extent, then use the BTRFS_IOC_ENCODED_READ ioctl to check
> that it matches what we've written. If the new io_uring interface for
> encoded reads is supported, we also check that that matches the ioctl.
> 
> Note that what we write isn't valid compressed data, so any non-encoded
> reads on these files will fail.
> 
> Signed-off-by: Mark Harmstone <maharmstone@xxxxxx>
> ---
>   .gitignore                |   2 +
>   src/Makefile              |   3 +-
>   src/btrfs_encoded_read.c  | 175 ++++++++++++++++++++++++++++++
>   src/btrfs_encoded_write.c | 206 +++++++++++++++++++++++++++++++++++
>   tests/btrfs/333           | 220 ++++++++++++++++++++++++++++++++++++++
>   tests/btrfs/333.out       |   2 +
>   6 files changed, 607 insertions(+), 1 deletion(-)
>   create mode 100644 src/btrfs_encoded_read.c
>   create mode 100644 src/btrfs_encoded_write.c
>   create mode 100755 tests/btrfs/333
>   create mode 100644 tests/btrfs/333.out
> 
> diff --git a/.gitignore b/.gitignore
> index f16173d9..efd47773 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -62,6 +62,8 @@ tags
>   /src/attr_replace_test
>   /src/attr-list-by-handle-cursor-test
>   /src/bstat
> +/src/btrfs_encoded_read
> +/src/btrfs_encoded_write
>   /src/bulkstat_null_ocount
>   /src/bulkstat_unlink_test
>   /src/bulkstat_unlink_test_modified
> diff --git a/src/Makefile b/src/Makefile
> index a0396332..b42b8147 100644
> --- a/src/Makefile
> +++ b/src/Makefile
> @@ -34,7 +34,8 @@ LINUX_TARGETS = xfsctl bstat t_mtab getdevicesize preallo_rw_pattern_reader \
>   	attr_replace_test swapon mkswap t_attr_corruption t_open_tmpfiles \
>   	fscrypt-crypt-util bulkstat_null_ocount splice-test chprojid_fail \
>   	detached_mounts_propagation ext4_resize t_readdir_3 splice2pipe \
> -	uuid_ioctl t_snapshot_deleted_subvolume fiemap-fault min_dio_alignment
> +	uuid_ioctl t_snapshot_deleted_subvolume fiemap-fault min_dio_alignment \
> +	btrfs_encoded_read btrfs_encoded_write
>   
>   EXTRA_EXECS = dmerror fill2attr fill2fs fill2fs_check scaleread.sh \
>   	      btrfs_crc32c_forged_name.py popdir.pl popattr.py \
> diff --git a/src/btrfs_encoded_read.c b/src/btrfs_encoded_read.c
> new file mode 100644
> index 00000000..a5082f70
> --- /dev/null
> +++ b/src/btrfs_encoded_read.c
> @@ -0,0 +1,175 @@
> +// SPDX-License-Identifier: GPL-2.0
> +// Copyright (c) Meta Platforms, Inc. and affiliates.
> +
> +#include <stdio.h>
> +#include <stdlib.h>
> +#include <string.h>
> +#include <errno.h>
> +#include <fcntl.h>
> +#include <unistd.h>
> +#include <sys/uio.h>
> +#include <sys/ioctl.h>
> +#include <linux/btrfs.h>

For this I need

+#include <linux/io_uring.h>

otherwise I get:

     [CC]    btrfs_encoded_read
/bin/sh ../libtool --quiet --tag=CC --mode=link /usr/bin/gcc-13 
btrfs_encoded_read.c -o btrfs_encoded_read -g -O2 -g -O2 -DDEBUG 
-I../include -DVERSION=\"1.1.1\" -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 
-funsigned-char -fno-strict-aliasing -Wall -DHAVE_FALLOCATE 
-DNEED_INTERNAL_XFS_IOC_EXCHANGE_RANGE   -lhandle -lacl -lpthread -lrt 
-luuid -lgdbm_compat -lgdbm -laio
  -luring   ../lib/libtest.la
btrfs_encoded_read.c: In function 'encoded_read_io_uring':
btrfs_encoded_read.c:100:26: error: 'IORING_OP_URING_CMD' undeclared 
(first use in this function); did you mean 'IORING_OP_LINKAT'?
   100 |         io_uring_prep_rw(IORING_OP_URING_CMD, sqe, fd, &enc, 
sizeof(enc), 0);
       |                          ^~~~~~~~~~~~~~~~~~~
       |                          IORING_OP_LINKAT
btrfs_encoded_read.c:100:26: note: each undeclared identifier is 
reported only once for each function it appears in
btrfs_encoded_read.c:101:12: error: 'struct io_uring_sqe' has no member 
named 'cmd_op'
   101 |         sqe->cmd_op = BTRFS_IOC_ENCODED_READ;
       |            ^~

during compilation.

Not sure if a ./configure macro thingy should/would solve this.





[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux