From: "Darrick J. Wong" <djwong@kernel.org>
To: Zorro Lang <zlang@redhat.com>
Cc: linux-xfs@vger.kernel.org, fstests@vger.kernel.org
Subject: Re: [PATCH 3/5] fuzzy: add a custom xfs find utility for scrub stress tests
Date: Tue, 7 Feb 2023 08:57:07 -0800 [thread overview]
Message-ID: <Y+KC40/Y2EidatYw@magnolia> (raw)
In-Reply-To: <20230205125747.ehig3b5ahyxgiuzq@zlang-mailbox>
On Sun, Feb 05, 2023 at 08:57:47PM +0800, Zorro Lang wrote:
> On Fri, Dec 30, 2022 at 02:19:06PM -0800, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > Create a new find(1) like utility that doesn't crash on directory tree
> > changes (like find does due to bugs in its loop detector) and actually
> > implements the custom xfs attribute predicates that we need for scrub
> > stress tests. This program will be needed for a future patch where we
> > add stress tests for scrub and repair of file metadata.
> >
> > Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> > ---
> > configure.ac | 5 +
> > include/builddefs.in | 4 +
> > m4/package_libcdev.m4 | 47 ++++++++
> > m4/package_xfslibs.m4 | 16 +++
> > src/Makefile | 10 ++
> > src/xfsfind.c | 290 +++++++++++++++++++++++++++++++++++++++++++++++++
> > 6 files changed, 372 insertions(+)
> > create mode 100644 src/xfsfind.c
> >
> >
> > diff --git a/configure.ac b/configure.ac
> > index cbf8377988..e92bd6b26d 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -66,6 +66,11 @@ AC_PACKAGE_WANT_LINUX_FS_H
> > AC_PACKAGE_WANT_LIBBTRFSUTIL
> >
> > AC_HAVE_COPY_FILE_RANGE
> > +AC_HAVE_SEEK_DATA
> > +AC_HAVE_BMV_OF_SHARED
> > +AC_HAVE_NFTW
> > +AC_HAVE_RLIMIT_NOFILE
> > +
> > AC_CHECK_FUNCS([renameat2])
> > AC_CHECK_FUNCS([reallocarray])
> > AC_CHECK_TYPES([struct mount_attr], [], [], [[#include <linux/mount.h>]])
> > diff --git a/include/builddefs.in b/include/builddefs.in
> > index 6641209f81..dab10c968f 100644
> > --- a/include/builddefs.in
> > +++ b/include/builddefs.in
> > @@ -68,6 +68,10 @@ HAVE_FIEMAP = @have_fiemap@
> > HAVE_FALLOCATE = @have_fallocate@
> > HAVE_COPY_FILE_RANGE = @have_copy_file_range@
> > HAVE_LIBBTRFSUTIL = @have_libbtrfsutil@
> > +HAVE_SEEK_DATA = @have_seek_data@
> > +HAVE_NFTW = @have_nftw@
> > +HAVE_BMV_OF_SHARED = @have_bmv_of_shared@
> > +HAVE_RLIMIT_NOFILE = @have_rlimit_nofile@
> >
> > GCCFLAGS = -funsigned-char -fno-strict-aliasing -Wall
> >
> > diff --git a/m4/package_libcdev.m4 b/m4/package_libcdev.m4
> > index 5c76c0f73e..e1b381c16f 100644
> > --- a/m4/package_libcdev.m4
> > +++ b/m4/package_libcdev.m4
> > @@ -110,3 +110,50 @@ AC_DEFUN([AC_HAVE_COPY_FILE_RANGE],
> > AC_SUBST(have_copy_file_range)
> > ])
> >
> > +# Check if we have SEEK_DATA
> > +AC_DEFUN([AC_HAVE_SEEK_DATA],
> > + [ AC_MSG_CHECKING([for SEEK_DATA])
> > + AC_TRY_LINK([
>
> The AC_TRY_LINK is obsolete by autoconf, refer to:
> https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Obsolete-Macros.html
>
> So as the suggestion of above link, we'd better to replace:
> Macro: AC_TRY_LINK (includes, function-body, [action-if-true], [action-if-false])
> with:
> AC_LINK_IFELSE(
> [AC_LANG_PROGRAM([[includes]],
> [[function-body]])],
> [action-if-true],
> [action-if-false])
>
> For example (hope it's right:)
Yeah... this patch was written so long ago I wasn't even aware of the
deprecations. I've run autoupdate to fix the problems and will repost.
--D
> diff --git a/m4/package_libcdev.m4 b/m4/package_libcdev.m4
> index e1b381c1..7f1767a4 100644
> --- a/m4/package_libcdev.m4
> +++ b/m4/package_libcdev.m4
> @@ -113,13 +113,13 @@ AC_DEFUN([AC_HAVE_COPY_FILE_RANGE],
> # Check if we have SEEK_DATA
> AC_DEFUN([AC_HAVE_SEEK_DATA],
> [ AC_MSG_CHECKING([for SEEK_DATA])
> - AC_TRY_LINK([
> + AC_LINK_IFELSE([AC_LANG_PROGRAM([[
> #define _GNU_SOURCE
> #include <sys/types.h>
> #include <unistd.h>
> - ], [
> + ]], [[
> lseek(-1, 0, SEEK_DATA);
> - ], have_seek_data=yes
> + ]])], have_seek_data=yes
> AC_MSG_RESULT(yes),
> AC_MSG_RESULT(no))
> AC_SUBST(have_seek_data)
>
> > +#define _GNU_SOURCE
> > +#include <sys/types.h>
> > +#include <unistd.h>
> > + ], [
> > + lseek(-1, 0, SEEK_DATA);
> > + ], have_seek_data=yes
> > + AC_MSG_RESULT(yes),
> > + AC_MSG_RESULT(no))
> > + AC_SUBST(have_seek_data)
> > + ])
> > +
> > +# Check if we have nftw
> > +AC_DEFUN([AC_HAVE_NFTW],
> > + [ AC_MSG_CHECKING([for nftw])
> > + AC_TRY_LINK([
>
> Same as above
>
> > +#define _GNU_SOURCE
> > +#include <stddef.h>
> > +#include <ftw.h>
> > + ], [
> > + nftw("/", (int (*)(const char *, const struct stat *, int, struct FTW *))1, 0, 0);
> > + ], have_nftw=yes
> > + AC_MSG_RESULT(yes),
> > + AC_MSG_RESULT(no))
> > + AC_SUBST(have_nftw)
> > + ])
> > +
> > +# Check if we have RLIMIT_NOFILE
> > +AC_DEFUN([AC_HAVE_RLIMIT_NOFILE],
> > + [ AC_MSG_CHECKING([for RLIMIT_NOFILE])
> > + AC_TRY_LINK([
>
> Same as above
>
> > +#define _GNU_SOURCE
> > +#include <sys/time.h>
> > +#include <sys/resource.h>
> > + ], [
> > + struct rlimit rlimit;
> > +
> > + rlimit.rlim_cur = 0;
> > + getrlimit(RLIMIT_NOFILE, &rlimit);
> > + ], have_rlimit_nofile=yes
> > + AC_MSG_RESULT(yes),
> > + AC_MSG_RESULT(no))
> > + AC_SUBST(have_rlimit_nofile)
> > + ])
> > diff --git a/m4/package_xfslibs.m4 b/m4/package_xfslibs.m4
> > index 0746cd1dc5..479f30a29b 100644
> > --- a/m4/package_xfslibs.m4
> > +++ b/m4/package_xfslibs.m4
> > @@ -104,3 +104,19 @@ AC_DEFUN([AC_PACKAGE_NEED_XFSCTL_MACRO],
> > exit 1
> > ])
> > ])
> > +
> > +# Check if we have BMV_OF_SHARED from the GETBMAPX ioctl
> > +AC_DEFUN([AC_HAVE_BMV_OF_SHARED],
> > + [ AC_MSG_CHECKING([for BMV_OF_SHARED])
> > + AC_TRY_LINK([
>
> Same as above
>
> Thanks,
> Zorro
>
> > +#define _GNU_SOURCE
> > +#include <xfs/xfs.h>
> > + ], [
> > + struct getbmapx obj;
> > + ioctl(-1, XFS_IOC_GETBMAPX, &obj);
> > + obj.bmv_oflags |= BMV_OF_SHARED;
> > + ], have_bmv_of_shared=yes
> > + AC_MSG_RESULT(yes),
> > + AC_MSG_RESULT(no))
> > + AC_SUBST(have_bmv_of_shared)
> > + ])
> > diff --git a/src/Makefile b/src/Makefile
> > index afdf6b30c5..7807ca89a5 100644
> > --- a/src/Makefile
> > +++ b/src/Makefile
> > @@ -83,6 +83,16 @@ ifeq ($(HAVE_LIBCAP), true)
> > LLDLIBS += -lcap
> > endif
> >
> > +ifeq ($(HAVE_SEEK_DATA), yes)
> > + ifeq ($(HAVE_NFTW), yes)
> > + ifeq ($(HAVE_BMV_OF_SHARED), yes)
> > + ifeq ($(HAVE_RLIMIT_NOFILE), yes)
> > + TARGETS += xfsfind
> > + endif
> > + endif
> > + endif
> > +endif
> > +
> > CFILES = $(TARGETS:=.c)
> > LDIRT = $(TARGETS) fssum
> >
> > diff --git a/src/xfsfind.c b/src/xfsfind.c
> > new file mode 100644
> > index 0000000000..6b0a93e793
> > --- /dev/null
> > +++ b/src/xfsfind.c
> > @@ -0,0 +1,290 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * find(1) but with special predicates for finding XFS attributes.
> > + * Copyright (C) 2022 Oracle.
> > + */
> > +#include <sys/time.h>
> > +#include <sys/resource.h>
> > +#include <sys/types.h>
> > +#include <stdio.h>
> > +#include <unistd.h>
> > +#include <ftw.h>
> > +#include <linux/fs.h>
> > +#include <xfs/xfs.h>
> > +
> > +#include "global.h"
> > +
> > +static int want_anyfile;
> > +static int want_datafile;
> > +static int want_attrfile;
> > +static int want_dir;
> > +static int want_regfile;
> > +static int want_sharedfile;
> > +static int report_errors = 1;
> > +
> > +static int
> > +check_datafile(
> > + const char *path,
> > + int fd)
> > +{
> > + off_t off;
> > +
> > + off = lseek(fd, 0, SEEK_DATA);
> > + if (off >= 0)
> > + return 1;
> > +
> > + if (errno == ENXIO)
> > + return 0;
> > +
> > + if (report_errors)
> > + perror(path);
> > +
> > + return -1;
> > +}
> > +
> > +static int
> > +check_attrfile(
> > + const char *path,
> > + int fd)
> > +{
> > + struct fsxattr fsx;
> > + int ret;
> > +
> > + ret = ioctl(fd, XFS_IOC_FSGETXATTR, &fsx);
> > + if (ret) {
> > + if (report_errors)
> > + perror(path);
> > + return -1;
> > + }
> > +
> > + if (want_attrfile && (fsx.fsx_xflags & XFS_XFLAG_HASATTR))
> > + return 1;
> > + return 0;
> > +}
> > +
> > +#define BMAP_NR 33
> > +static struct getbmapx bmaps[BMAP_NR];
> > +
> > +static int
> > +check_sharedfile(
> > + const char *path,
> > + int fd)
> > +{
> > + struct getbmapx *key = &bmaps[0];
> > + unsigned int i;
> > + int ret;
> > +
> > + memset(key, 0, sizeof(struct getbmapx));
> > + key->bmv_length = ULLONG_MAX;
> > + /* no holes and don't flush dirty pages */
> > + key->bmv_iflags = BMV_IF_DELALLOC | BMV_IF_NO_HOLES;
> > + key->bmv_count = BMAP_NR;
> > +
> > + while ((ret = ioctl(fd, XFS_IOC_GETBMAPX, bmaps)) == 0) {
> > + struct getbmapx *p = &bmaps[1];
> > + xfs_off_t new_off;
> > +
> > + for (i = 0; i < key->bmv_entries; i++, p++) {
> > + if (p->bmv_oflags & BMV_OF_SHARED)
> > + return 1;
> > + }
> > +
> > + if (key->bmv_entries == 0)
> > + break;
> > + p = key + key->bmv_entries;
> > + if (p->bmv_oflags & BMV_OF_LAST)
> > + return 0;
> > +
> > + new_off = p->bmv_offset + p->bmv_length;
> > + key->bmv_length -= new_off - key->bmv_offset;
> > + key->bmv_offset = new_off;
> > + }
> > + if (ret < 0) {
> > + if (report_errors)
> > + perror(path);
> > + return -1;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +static void
> > +print_help(
> > + const char *name)
> > +{
> > + printf("Usage: %s [OPTIONS] path\n", name);
> > + printf("\n");
> > + printf("Print all file paths matching any of the given predicates.\n");
> > + printf("\n");
> > + printf("-a Match files with xattrs.\n");
> > + printf("-b Match files with data blocks.\n");
> > + printf("-d Match directories.\n");
> > + printf("-q Ignore errors while walking directory tree.\n");
> > + printf("-r Match regular files.\n");
> > + printf("-s Match files with shared blocks.\n");
> > + printf("\n");
> > + printf("If no matching options are given, match all files found.\n");
> > +}
> > +
> > +static int
> > +visit(
> > + const char *path,
> > + const struct stat *sb,
> > + int typeflag,
> > + struct FTW *ftwbuf)
> > +{
> > + int printme = 1;
> > + int fd = -1;
> > + int retval = FTW_CONTINUE;
> > +
> > + if (want_anyfile)
> > + goto out;
> > + if (want_regfile && typeflag == FTW_F)
> > + goto out;
> > + if (want_dir && typeflag == FTW_D)
> > + goto out;
> > +
> > + /*
> > + * We can only open directories and files; screen out everything else.
> > + * Note that nftw lies and reports FTW_F for device files, so check the
> > + * statbuf mode too.
> > + */
> > + if (typeflag != FTW_F && typeflag != FTW_D) {
> > + printme = 0;
> > + goto out;
> > + }
> > +
> > + if (!S_ISREG(sb->st_mode) && !S_ISDIR(sb->st_mode)) {
> > + printme = 0;
> > + goto out;
> > + }
> > +
> > + fd = open(path, O_RDONLY);
> > + if (fd < 0) {
> > + if (report_errors) {
> > + perror(path);
> > + return FTW_STOP;
> > + }
> > +
> > + return FTW_CONTINUE;
> > + }
> > +
> > + if (want_datafile && typeflag == FTW_F) {
> > + int ret = check_datafile(path, fd);
> > + if (ret < 0 && report_errors) {
> > + printme = 0;
> > + retval = FTW_STOP;
> > + goto out_fd;
> > + }
> > +
> > + if (ret == 1)
> > + goto out_fd;
> > + }
> > +
> > + if (want_attrfile) {
> > + int ret = check_attrfile(path, fd);
> > + if (ret < 0 && report_errors) {
> > + printme = 0;
> > + retval = FTW_STOP;
> > + goto out_fd;
> > + }
> > +
> > + if (ret == 1)
> > + goto out_fd;
> > + }
> > +
> > + if (want_sharedfile) {
> > + int ret = check_sharedfile(path, fd);
> > + if (ret < 0 && report_errors) {
> > + printme = 0;
> > + retval = FTW_STOP;
> > + goto out_fd;
> > + }
> > +
> > + if (ret == 1)
> > + goto out_fd;
> > + }
> > +
> > + printme = 0;
> > +out_fd:
> > + close(fd);
> > +out:
> > + if (printme)
> > + printf("%s\n", path);
> > + return retval;
> > +}
> > +
> > +static void
> > +handle_sigabrt(
> > + int signal,
> > + siginfo_t *info,
> > + void *ucontext)
> > +{
> > + fprintf(stderr, "Signal %u, exiting.\n", signal);
> > + exit(2);
> > +}
> > +
> > +int
> > +main(
> > + int argc,
> > + char *argv[])
> > +{
> > + struct rlimit rlimit;
> > + struct sigaction abrt = {
> > + .sa_sigaction = handle_sigabrt,
> > + .sa_flags = SA_SIGINFO,
> > + };
> > + int c;
> > + int ret;
> > +
> > + while ((c = getopt(argc, argv, "abdqrs")) >= 0) {
> > + switch (c) {
> > + case 'a': want_attrfile = 1; break;
> > + case 'b': want_datafile = 1; break;
> > + case 'd': want_dir = 1; break;
> > + case 'q': report_errors = 0; break;
> > + case 'r': want_regfile = 1; break;
> > + case 's': want_sharedfile = 1; break;
> > + default:
> > + print_help(argv[0]);
> > + return 1;
> > + }
> > + }
> > +
> > + ret = getrlimit(RLIMIT_NOFILE, &rlimit);
> > + if (ret) {
> > + perror("RLIMIT_NOFILE");
> > + return 1;
> > + }
> > +
> > + if (!want_attrfile && !want_datafile && !want_dir && !want_regfile &&
> > + !want_sharedfile)
> > + want_anyfile = 1;
> > +
> > + /*
> > + * nftw is known to abort() if a directory it is walking disappears out
> > + * from under it. Handle this with grace if the caller wants us to run
> > + * quietly.
> > + */
> > + if (!report_errors) {
> > + ret = sigaction(SIGABRT, &abrt, NULL);
> > + if (ret) {
> > + perror("SIGABRT handler");
> > + return 1;
> > + }
> > + }
> > +
> > + for (c = optind; c < argc; c++) {
> > + ret = nftw(argv[c], visit, rlimit.rlim_cur - 5,
> > + FTW_ACTIONRETVAL | FTW_CHDIR | FTW_MOUNT |
> > + FTW_PHYS);
> > + if (ret && report_errors) {
> > + perror(argv[c]);
> > + break;
> > + }
> > + }
> > +
> > + if (ret)
> > + return 1;
> > + return 0;
> > +}
> >
>
next prev parent reply other threads:[~2023-02-07 16:57 UTC|newest]
Thread overview: 106+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-30 21:14 [NYE DELUGE 2/4] xfs: online repair in its entirety Darrick J. Wong
2022-12-30 22:19 ` [PATCHSET v24.0 0/5] fstests: race online scrub with fsstress Darrick J. Wong
2022-12-30 22:19 ` [PATCH 4/5] fuzzy: allow xfs scrub stress tests to pick preconfigured fsstress configs Darrick J. Wong
2023-02-07 18:48 ` Zorro Lang
2022-12-30 22:19 ` [PATCH 1/5] xfs/357: switch fuzzing to agi 1 Darrick J. Wong
2023-02-07 18:46 ` Zorro Lang
2022-12-30 22:19 ` [PATCH 2/5] xfs: race fsstress with online scrubbers for AG and fs metadata Darrick J. Wong
2023-02-05 13:04 ` Zorro Lang
2023-02-07 16:58 ` Darrick J. Wong
2023-02-07 17:02 ` [PATCH v24.1 " Darrick J. Wong
2023-02-07 18:45 ` Zorro Lang
2022-12-30 22:19 ` [PATCH 3/5] fuzzy: add a custom xfs find utility for scrub stress tests Darrick J. Wong
2023-02-05 12:57 ` Zorro Lang
2023-02-07 16:57 ` Darrick J. Wong [this message]
2023-02-07 17:01 ` [PATCH v24.1 " Darrick J. Wong
2023-02-07 18:42 ` Zorro Lang
2022-12-30 22:19 ` [PATCH 5/5] xfs: race fsstress with online scrubbers for file metadata Darrick J. Wong
2022-12-30 22:19 ` [PATCHSET v24.0 0/1] xfs: force rebuilding of metadata Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/1] fuzzy: use FORCE_REBUILD over injecting force_repair Darrick J. Wong
2023-02-14 8:00 ` Zorro Lang
2023-02-14 18:18 ` Darrick J. Wong
2023-02-16 14:57 ` Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 0/2] fstests: online repair of AG btrees Darrick J. Wong
2022-12-30 22:19 ` [PATCH 2/2] xfs: stress test ag repair functions Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/2] xfs: test rebuilding the entire filesystem with online fsck Darrick J. Wong
2023-02-18 6:06 ` [PATCHSET v24.0 0/2] fstests: online repair of AG btrees Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 0/1] fstests: online repair of inodes Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/1] xfs: race fsstress with online repair for inode record metadata Darrick J. Wong
2023-02-18 6:07 ` Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 0/4] fstests: online repair of file fork mappings Darrick J. Wong
2022-12-30 22:19 ` [PATCH 2/4] xfs: race fsstress with online repair for inode and fork metadata Darrick J. Wong
2022-12-30 22:19 ` [PATCH 4/4] xfs: race fsstress with online repair for special file metadata Darrick J. Wong
2022-12-30 22:19 ` [PATCH 3/4] xfs: ensure that online file data fork repairs don't hit EDQUOT Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/4] xfs: test rebuilding xattrs when the data fork is btree format Darrick J. Wong
2023-02-18 6:07 ` [PATCHSET v24.0 0/4] fstests: online repair of file fork mappings Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 0/1] fstests: online repair of quota and counters Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/1] xfs: race fsstress with online scrub and repair for quota metadata Darrick J. Wong
2023-02-18 6:10 ` Zorro Lang
2023-02-18 6:12 ` Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 0/1] fstests: online repair of quota counters Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/1] xfs: race fsstress with online scrub and repair for quotacheck Darrick J. Wong
2023-02-18 6:12 ` Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 0/1] fstests: online repair of file link counts Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/1] xfs: race fsstress with inode link count check and repair Darrick J. Wong
2023-02-18 6:13 ` Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 0/2] fstests: online repair for fs summary counters Darrick J. Wong
2022-12-30 22:19 ` [PATCH 2/2] xfs: race fsstress with online repair for " Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/2] xfs: test fs summary counter online repair Darrick J. Wong
2023-02-18 6:14 ` [PATCHSET v24.0 0/2] fstests: online repair for fs summary counters Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 0/1] fstests: online repair of rmap btrees Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/1] xfs/422: don't freeze while racing rmap repair and fsstress Darrick J. Wong
2023-02-18 6:15 ` Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 0/2] fstests: fix a few bugs in fs population Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/2] populate: take a snapshot of the filesystem if creation fails Darrick J. Wong
2022-12-30 22:19 ` [PATCH 2/2] populate: fix some weirdness in __populate_check_xfs_agbtree_height Darrick J. Wong
2023-02-18 6:16 ` [PATCHSET v24.0 0/2] fstests: fix a few bugs in fs population Zorro Lang
2022-12-30 22:19 ` [PATCHSET v24.0 00/24] fstests: improve xfs fuzzing Darrick J. Wong
2022-12-30 22:19 ` [PATCH 05/24] fuzzy: don't fuzz inode generation numbers Darrick J. Wong
2022-12-30 22:19 ` [PATCH 06/24] fuzzy: don't fuzz user-controllable inode flags Darrick J. Wong
2022-12-30 22:19 ` [PATCH 01/24] fuzzy: disable per-field random fuzzing by default Darrick J. Wong
2022-12-30 22:19 ` [PATCH 07/24] fuzzy: don't fuzz xattr namespace flags and values Darrick J. Wong
2022-12-30 22:19 ` [PATCH 03/24] fuzzy: don't fuzz the log sequence number Darrick J. Wong
2022-12-30 22:19 ` [PATCH 04/24] fuzzy: don't fuzz obsolete inode fields Darrick J. Wong
2022-12-30 22:19 ` [PATCH 02/24] fuzzy: disable timstamp fuzzing by default Darrick J. Wong
2022-12-30 22:19 ` [PATCH 10/24] common/fuzzy: hoist the post-repair fs modification step Darrick J. Wong
2022-12-30 22:19 ` [PATCH 13/24] common/fuzzy: fix some problems with the no-repair strategy Darrick J. Wong
2022-12-30 22:19 ` [PATCH 14/24] common/fuzzy: fix some problems with the online-then-offline repair strategy Darrick J. Wong
2022-12-30 22:19 ` [PATCH 08/24] common/fuzzy: split out each repair strategy into a separate helper Darrick J. Wong
2022-12-30 22:19 ` [PATCH 11/24] common/fuzzy: fix some problems with the online repair strategy Darrick J. Wong
2022-12-30 22:19 ` [PATCH 12/24] common/fuzzy: fix some problems with the offline " Darrick J. Wong
2022-12-30 22:19 ` [PATCH 09/24] common/fuzzy: add an underline to the full log between sections Darrick J. Wong
2022-12-30 22:19 ` [PATCH 16/24] xfs/{35[45],455}: fix bogus corruption errors Darrick J. Wong
2022-12-30 22:19 ` [PATCH 20/24] fuzzy: dump metadata state before fuzzing Darrick J. Wong
2022-12-30 22:19 ` [PATCH 21/24] fuzzy: compress coredumps created while fuzzing Darrick J. Wong
2022-12-30 22:19 ` [PATCH 19/24] common/fuzzy: exercise the filesystem a little harder after repairing Darrick J. Wong
2022-12-30 22:19 ` [PATCH 15/24] common/fuzzy: fix some problems with the post-repair fs modification code Darrick J. Wong
2022-12-30 22:19 ` [PATCH 22/24] fuzzy: report the fuzzing repair strategy in seqres.full Darrick J. Wong
2022-12-30 22:19 ` [PATCH 17/24] common/fuzzy: evaluate xfs_check vs xfs_repair Darrick J. Wong
2022-12-30 22:19 ` [PATCH 18/24] common: check xfs health after doing an online scrub Darrick J. Wong
2022-12-30 22:19 ` [PATCH 23/24] xfs: improve metadata array field handling when fuzzing Darrick J. Wong
2022-12-30 22:19 ` [PATCH 24/24] fuzzy: for fuzzing ag btrees, find the path to the AG header Darrick J. Wong
2022-12-30 22:19 ` [PATCHSET v24.0 0/5] fstests: strengthen fuzz testing Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/5] fuzzy: test fuzzing directory block mappings Darrick J. Wong
2022-12-30 22:19 ` [PATCH 2/5] fuzzy: test fuzzing xattr " Darrick J. Wong
2022-12-30 22:19 ` [PATCH 4/5] xfs: fuzz test both repair strategies Darrick J. Wong
2022-12-30 22:19 ` [PATCH 3/5] fuzzy: test fuzzing realtime free space metadata Darrick J. Wong
2022-12-30 22:19 ` [PATCH 5/5] fuzzy: fuzz test key/pointers of inode btrees Darrick J. Wong
2022-12-30 22:19 ` [PATCHSET v24.0 0/7] fstests: atomic file updates Darrick J. Wong
2022-12-30 22:19 ` [PATCH 4/7] generic, xfs: test scatter-gather " Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/7] xfs/122: fix for swapext log items Darrick J. Wong
2022-12-30 22:19 ` [PATCH 5/7] generic: test that file privilege gets dropped with FIEXCHANGE_RANGE Darrick J. Wong
2022-12-30 22:19 ` [PATCH 2/7] generic: test old xfs extent swapping ioctl Darrick J. Wong
2022-12-30 22:19 ` [PATCH 3/7] generic: test new vfs swapext ioctl Darrick J. Wong
2022-12-30 22:19 ` [PATCH 6/7] fsx: support FIEXCHANGE_RANGE Darrick J. Wong
2023-02-28 1:55 ` Zorro Lang
2023-03-01 2:56 ` Darrick J. Wong
2022-12-30 22:19 ` [PATCH 7/7] fsstress: update for FIEXCHANGE_RANGE Darrick J. Wong
2022-12-30 22:19 ` [PATCHSET v24.0 0/1] fstests: online repair of realtime summaries Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/1] xfs: race fsstress with online repair of realtime summary files Darrick J. Wong
2022-12-30 22:19 ` [PATCHSET v24.0 0/1] fstests: online repair of extended attributes Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/1] xfs: race fsstress with online repair of extended attribute data Darrick J. Wong
2022-12-30 22:19 ` [PATCHSET v24.0 0/2] fstests: online repair of directories Darrick J. Wong
2022-12-30 22:19 ` [PATCH 1/2] xfs: ensure that online directory repairs don't hit EDQUOT Darrick J. Wong
2022-12-30 22:19 ` [PATCH 2/2] xfs: race fsstress with online repair of dirs and parent pointers Darrick J. Wong
2022-12-30 22:20 ` [PATCHSET v24.0 0/1] fstests: test automatic scrub optimization by default Darrick J. Wong
2022-12-30 22:20 ` [PATCH 1/1] xfs: test xfs_scrub dry run, preen, and repair mode Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y+KC40/Y2EidatYw@magnolia \
--to=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=zlang@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox