diff mbox series

[4/5] tools: make sure that test groups are described in the documentation

Message ID 163045517173.771564.1524162806861567173.stgit@magnolia (mailing list archive)
State New, archived
Headers show
Series fstests: document all test groups | expand

Commit Message

Darrick J. Wong Sept. 1, 2021, 12:12 a.m. UTC
From: Darrick J. Wong <djwong@kernel.org>

Create a file to document the purpose of each test group that is
currently defined in fstests, and add a build script to check that every
group mentioned in the tests is also mentioned in the documentation.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 doc/group-names.txt    |  136 ++++++++++++++++++++++++++++++++++++++++++++++++
 include/buildgrouplist |    1 
 tools/check-groups     |   33 ++++++++++++
 3 files changed, 170 insertions(+)
 create mode 100644 doc/group-names.txt
 create mode 100755 tools/check-groups

Comments

Amir Goldstein Sept. 1, 2021, 4:46 a.m. UTC | #1
On Wed, Sep 1, 2021 at 3:37 AM Darrick J. Wong <djwong@kernel.org> wrote:
>
> From: Darrick J. Wong <djwong@kernel.org>
>
> Create a file to document the purpose of each test group that is
> currently defined in fstests, and add a build script to check that every
> group mentioned in the tests is also mentioned in the documentation.
>

This is awesome and long due.
Thanks for doing that!

Minor nits about overlayfs groups below...

> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> ---
>  doc/group-names.txt    |  136 ++++++++++++++++++++++++++++++++++++++++++++++++
>  include/buildgrouplist |    1
>  tools/check-groups     |   33 ++++++++++++
>  3 files changed, 170 insertions(+)
>  create mode 100644 doc/group-names.txt
>  create mode 100755 tools/check-groups
>
>
> diff --git a/doc/group-names.txt b/doc/group-names.txt
> new file mode 100644
> index 00000000..ae517328
> --- /dev/null
> +++ b/doc/group-names.txt
> @@ -0,0 +1,136 @@
> +======================= =======================================================
> +Group Name:            Description:
> +======================= =======================================================
> +all                    All known tests, automatically generated by ./check at
> +                       runtime
> +auto                   Tests that should be run automatically.  These should
> +                       not require more than ~5 minutes to run.
> +quick                  Tests that should run in under 30 seconds.
> +deprecated             Old tests that should not be run.
> +
> +acl                    Access Control Lists
> +admin                  xfs_admin functionality
> +aio                    general libaio async io tests
> +atime                  file access time
> +attr                   extended attributes
> +attr2                  xfs v2 extended aributes
> +balance                        btrfs tree rebalance
> +bigtime                        timestamps beyond the year 2038
> +blockdev               block device functionality
> +broken                 broken tests
> +cap                    Linux capabilities
> +casefold               directory name casefolding
> +ci                     ASCII case-insensitive directory name lookups
> +clone                  FICLONE/FICLONERANGE ioctls
> +clone_stress           stress testing FICLONE/FICLONERANGE
> +collapse               fallocate collapse_range
> +compress               file compression
> +convert                        btrfs ext[34] conversion tool
> +copy                   xfs_copy functionality
> +copy_range             copy_file_range syscall
> +copyup                 overlayfs copyup support

The tests in this group exercise copy up.
There is no such thing as overlayfs without "copyup support",
so guess my point is - remove the word "support"

> +dangerous              dangerous test that can crash the system
> +dangerous_bothrepair   fuzzers to evaluate xfs_scrub + xfs_repair repair
> +dangerous_fuzzers      fuzzers that can crash your computer
> +dangerous_norepair     fuzzers to evaluate kernel metadata verifiers
> +dangerous_online_repair        fuzzers to evaluate xfs_scrub online repair
> +dangerous_repair       fuzzers to evaluate xfs_repair offline repair
> +dangerous_scrub                fuzzers to evaluate xfs_scrub checking
> +data                   data loss checkers
> +dax                    direct access mode for persistent memory files
> +db                     xfs_db functional tests
> +dedupe                 FIEDEDUPERANGE ioctl
> +defrag                 filesystem defragmenters
> +dir                    directory test functions
> +dump                   dump and restore utilities
> +eio                    IO error reporting
> +encrypt                        encrypted file contents
> +enospc                 ENOSPC error reporting
> +exportfs               file handles
> +filestreams            XFS filestreams allocator
> +freeze                 filesystem freeze tests
> +fsck                   general fsck tests
> +fsmap                  FS_IOC_GETFSMAP ioctl
> +fsr                    XFS free space reorganizer
> +fuzzers                        filesystem fuzz tests
> +growfs                 increasing the size of a filesystem
> +hardlink               hardlinks
> +health                 XFS health reporting
> +idmapped               idmapped mount functionality
> +inobtcount             XFS inode btree count tests
> +insert                 fallocate insert_range
> +ioctl                  general ioctl tests
> +io_uring               general io_uring async io tests
> +label                  filesystem labelling
> +limit                  resource limits
> +locks                  file locking
> +log                    metadata logging
> +logprint               xfs_logprint functional tests
> +long_rw                        long-soak read write IO path exercisers
> +metacopy               overlayfs metadata-only copy-up
> +metadata               filesystem metadata update exercisers
> +metadump               xfs_metadump/xfs_mdrestore functionality
> +mkfs                   filesystem formatting tools
> +mount                  mount option and functionality checks
> +nested                 nested overlayfs instances
> +nfs4_acl               NFSv4 access control lists
> +nonsamefs              overlayfs layers on different filesystems
> +online_repair          online repair functionality tests
> +other                  dumping ground, do not add more tests to this group
> +overlay                        using overlayfs on top of FSTYP

This description is a bit confusing, because the recommended
way to run overlayfs tests as described in README.overlay is
to set FSTYP=xfs and run ./check -overlay

I'm struggling for a better description but perhaps:
"using overlayfs regardless of ./check -overlay flag"?


> +pattern                        specific IO pattern tests
> +perms                  access control and permission checking
> +pipe                   pipe functionality
> +pnfs                   PNFS
> +posix                  POSIX behavior conformance
> +prealloc               fallocate
> +preallocrw             fallocate, then read and write
> +punch                  fallocate punch_hole
> +qgroup                 btrfs qgroup feature
> +quota                  filesystem usage quotas
> +raid                   btrfs RAID
> +realtime               XFS realtime volumes
> +recoveryloop           crash recovery loops
> +redirect               overlayfs redirect_dir feature
> +remote                 dump and restore with a remote tape
> +remount                        remounting filesystems
> +rename                 rename system call
> +repair                 xfs_repair functional tests
> +replace                        btrfs device replace
> +replay                 dm-logwrites replays
> +resize                 resize2fs functionality tests
> +richacl                        rich ACL feature
> +rmap                   XFS reverse mapping exercisers
> +rotate                 overlayfs feature of some sort"

I guess that works :-D
but to be accurate, this is actually a unionmount testsuite feature -
at selected test points in the workload, a new upper layer is stacked
on to overlayfs, so maybe:
"upper layer rotate tests from the unionmount test suite"?

> +rw                     read/write IO tests
> +samefs                 overlayfs when all layers are on the same fs
> +scrub                  filesystem metadata scrubbers
> +seed                   btrfs seeded filesystems
> +seek                   llseek functionality
> +send                   btrfs send/receive
> +shrinkfs               decreasing the size of a filesystem
> +shutdown               FS_IOC_SHUTDOWN ioctl
> +snapshot               btrfs snapshots
> +soak                   long soak tests of any kind
> +spaceman               xfs_spaceman functional tests
> +splice                 splice system call
> +stress                 fsstress filesystem exerciser
> +subvol                 btrfs subvolumes
> +subvolume              btrfs subvolumes (again?)

A cleanup patch to fix this typo in btrfs/233?

Thanks,
Amir.
Christoph Hellwig Sept. 1, 2021, 8:50 a.m. UTC | #2
Looks good,

Reviewed-by: Christoph Hellwig <hch@lst.de>
Darrick J. Wong Sept. 1, 2021, 4:43 p.m. UTC | #3
On Wed, Sep 01, 2021 at 07:46:01AM +0300, Amir Goldstein wrote:
> On Wed, Sep 1, 2021 at 3:37 AM Darrick J. Wong <djwong@kernel.org> wrote:
> >
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > Create a file to document the purpose of each test group that is
> > currently defined in fstests, and add a build script to check that every
> > group mentioned in the tests is also mentioned in the documentation.
> >
> 
> This is awesome and long due.
> Thanks for doing that!
> 
> Minor nits about overlayfs groups below...

Heh, yeah, thanks for making corrections. :)

> > Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> > ---
> >  doc/group-names.txt    |  136 ++++++++++++++++++++++++++++++++++++++++++++++++
> >  include/buildgrouplist |    1
> >  tools/check-groups     |   33 ++++++++++++
> >  3 files changed, 170 insertions(+)
> >  create mode 100644 doc/group-names.txt
> >  create mode 100755 tools/check-groups
> >
> >
> > diff --git a/doc/group-names.txt b/doc/group-names.txt
> > new file mode 100644
> > index 00000000..ae517328
> > --- /dev/null
> > +++ b/doc/group-names.txt
> > @@ -0,0 +1,136 @@
> > +======================= =======================================================
> > +Group Name:            Description:
> > +======================= =======================================================
> > +all                    All known tests, automatically generated by ./check at
> > +                       runtime
> > +auto                   Tests that should be run automatically.  These should
> > +                       not require more than ~5 minutes to run.
> > +quick                  Tests that should run in under 30 seconds.
> > +deprecated             Old tests that should not be run.
> > +
> > +acl                    Access Control Lists
> > +admin                  xfs_admin functionality
> > +aio                    general libaio async io tests
> > +atime                  file access time
> > +attr                   extended attributes
> > +attr2                  xfs v2 extended aributes
> > +balance                        btrfs tree rebalance
> > +bigtime                        timestamps beyond the year 2038
> > +blockdev               block device functionality
> > +broken                 broken tests
> > +cap                    Linux capabilities
> > +casefold               directory name casefolding
> > +ci                     ASCII case-insensitive directory name lookups
> > +clone                  FICLONE/FICLONERANGE ioctls
> > +clone_stress           stress testing FICLONE/FICLONERANGE
> > +collapse               fallocate collapse_range
> > +compress               file compression
> > +convert                        btrfs ext[34] conversion tool
> > +copy                   xfs_copy functionality
> > +copy_range             copy_file_range syscall
> > +copyup                 overlayfs copyup support
> 
> The tests in this group exercise copy up.
> There is no such thing as overlayfs without "copyup support",
> so guess my point is - remove the word "support"

OK.

> > +dangerous              dangerous test that can crash the system
> > +dangerous_bothrepair   fuzzers to evaluate xfs_scrub + xfs_repair repair
> > +dangerous_fuzzers      fuzzers that can crash your computer
> > +dangerous_norepair     fuzzers to evaluate kernel metadata verifiers
> > +dangerous_online_repair        fuzzers to evaluate xfs_scrub online repair
> > +dangerous_repair       fuzzers to evaluate xfs_repair offline repair
> > +dangerous_scrub                fuzzers to evaluate xfs_scrub checking
> > +data                   data loss checkers
> > +dax                    direct access mode for persistent memory files
> > +db                     xfs_db functional tests
> > +dedupe                 FIEDEDUPERANGE ioctl
> > +defrag                 filesystem defragmenters
> > +dir                    directory test functions
> > +dump                   dump and restore utilities
> > +eio                    IO error reporting
> > +encrypt                        encrypted file contents
> > +enospc                 ENOSPC error reporting
> > +exportfs               file handles
> > +filestreams            XFS filestreams allocator
> > +freeze                 filesystem freeze tests
> > +fsck                   general fsck tests
> > +fsmap                  FS_IOC_GETFSMAP ioctl
> > +fsr                    XFS free space reorganizer
> > +fuzzers                        filesystem fuzz tests
> > +growfs                 increasing the size of a filesystem
> > +hardlink               hardlinks
> > +health                 XFS health reporting
> > +idmapped               idmapped mount functionality
> > +inobtcount             XFS inode btree count tests
> > +insert                 fallocate insert_range
> > +ioctl                  general ioctl tests
> > +io_uring               general io_uring async io tests
> > +label                  filesystem labelling
> > +limit                  resource limits
> > +locks                  file locking
> > +log                    metadata logging
> > +logprint               xfs_logprint functional tests
> > +long_rw                        long-soak read write IO path exercisers
> > +metacopy               overlayfs metadata-only copy-up
> > +metadata               filesystem metadata update exercisers
> > +metadump               xfs_metadump/xfs_mdrestore functionality
> > +mkfs                   filesystem formatting tools
> > +mount                  mount option and functionality checks
> > +nested                 nested overlayfs instances
> > +nfs4_acl               NFSv4 access control lists
> > +nonsamefs              overlayfs layers on different filesystems
> > +online_repair          online repair functionality tests
> > +other                  dumping ground, do not add more tests to this group
> > +overlay                        using overlayfs on top of FSTYP
> 
> This description is a bit confusing, because the recommended
> way to run overlayfs tests as described in README.overlay is
> to set FSTYP=xfs and run ./check -overlay
> 
> I'm struggling for a better description but perhaps:
> "using overlayfs regardless of ./check -overlay flag"?

Hmm.  Since I'm the author of the only test that uses this tag, I guess
I'm the authority (ha!) on what the name actually means.

That test (generic/631) is a regression test for a XFS whiteout handling
bug that can only be reproduced by layering overlayfs atop xfs.
Overlayfs is incidental to reproducing the XFS bug, but AFAIK overlayfs
is the only in-kernel user of whiteout, which is why it's critical here.

It's not right to make it "_supported_fs overlay" because we're not
testing overlayfs functionality; we're merely using it as a stick to
poke another filesystem.

How about: "regression tests that require the use of overlayfs in a
targetted configuration" ?

> > +pattern                        specific IO pattern tests
> > +perms                  access control and permission checking
> > +pipe                   pipe functionality
> > +pnfs                   PNFS
> > +posix                  POSIX behavior conformance
> > +prealloc               fallocate
> > +preallocrw             fallocate, then read and write
> > +punch                  fallocate punch_hole
> > +qgroup                 btrfs qgroup feature
> > +quota                  filesystem usage quotas
> > +raid                   btrfs RAID
> > +realtime               XFS realtime volumes
> > +recoveryloop           crash recovery loops
> > +redirect               overlayfs redirect_dir feature
> > +remote                 dump and restore with a remote tape
> > +remount                        remounting filesystems
> > +rename                 rename system call
> > +repair                 xfs_repair functional tests
> > +replace                        btrfs device replace
> > +replay                 dm-logwrites replays
> > +resize                 resize2fs functionality tests
> > +richacl                        rich ACL feature
> > +rmap                   XFS reverse mapping exercisers
> > +rotate                 overlayfs feature of some sort"
> 
> I guess that works :-D
> but to be accurate, this is actually a unionmount testsuite feature -
> at selected test points in the workload, a new upper layer is stacked
> on to overlayfs, so maybe:
> "upper layer rotate tests from the unionmount test suite"?

I've changed it to 'overlayfs upper layer rotate tests from the
unionmount test suite'.

> > +rw                     read/write IO tests
> > +samefs                 overlayfs when all layers are on the same fs
> > +scrub                  filesystem metadata scrubbers
> > +seed                   btrfs seeded filesystems
> > +seek                   llseek functionality
> > +send                   btrfs send/receive
> > +shrinkfs               decreasing the size of a filesystem
> > +shutdown               FS_IOC_SHUTDOWN ioctl
> > +snapshot               btrfs snapshots
> > +soak                   long soak tests of any kind
> > +spaceman               xfs_spaceman functional tests
> > +splice                 splice system call
> > +stress                 fsstress filesystem exerciser
> > +subvol                 btrfs subvolumes
> > +subvolume              btrfs subvolumes (again?)
> 
> A cleanup patch to fix this typo in btrfs/233?

Will do.

--D

> 
> Thanks,
> Amir.
Amir Goldstein Sept. 2, 2021, 4:49 a.m. UTC | #4
On Wed, Sep 1, 2021 at 7:43 PM Darrick J. Wong <djwong@kernel.org> wrote:
>
> On Wed, Sep 01, 2021 at 07:46:01AM +0300, Amir Goldstein wrote:
> > On Wed, Sep 1, 2021 at 3:37 AM Darrick J. Wong <djwong@kernel.org> wrote:
> > >
> > > From: Darrick J. Wong <djwong@kernel.org>
> > >
> > > Create a file to document the purpose of each test group that is
> > > currently defined in fstests, and add a build script to check that every
> > > group mentioned in the tests is also mentioned in the documentation.
> > >
> >
> > This is awesome and long due.
> > Thanks for doing that!
> >
> > Minor nits about overlayfs groups below...
>
> Heh, yeah, thanks for making corrections. :)
>
> > > Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> > > ---
> > >  doc/group-names.txt    |  136 ++++++++++++++++++++++++++++++++++++++++++++++++
> > >  include/buildgrouplist |    1
> > >  tools/check-groups     |   33 ++++++++++++
> > >  3 files changed, 170 insertions(+)
> > >  create mode 100644 doc/group-names.txt
> > >  create mode 100755 tools/check-groups
> > >
> > >
> > > diff --git a/doc/group-names.txt b/doc/group-names.txt
> > > new file mode 100644
> > > index 00000000..ae517328
> > > --- /dev/null
> > > +++ b/doc/group-names.txt
> > > @@ -0,0 +1,136 @@
> > > +======================= =======================================================
> > > +Group Name:            Description:
> > > +======================= =======================================================
> > > +all                    All known tests, automatically generated by ./check at
> > > +                       runtime
> > > +auto                   Tests that should be run automatically.  These should
> > > +                       not require more than ~5 minutes to run.
> > > +quick                  Tests that should run in under 30 seconds.
> > > +deprecated             Old tests that should not be run.
> > > +
> > > +acl                    Access Control Lists
> > > +admin                  xfs_admin functionality
> > > +aio                    general libaio async io tests
> > > +atime                  file access time
> > > +attr                   extended attributes
> > > +attr2                  xfs v2 extended aributes
> > > +balance                        btrfs tree rebalance
> > > +bigtime                        timestamps beyond the year 2038
> > > +blockdev               block device functionality
> > > +broken                 broken tests
> > > +cap                    Linux capabilities
> > > +casefold               directory name casefolding
> > > +ci                     ASCII case-insensitive directory name lookups
> > > +clone                  FICLONE/FICLONERANGE ioctls
> > > +clone_stress           stress testing FICLONE/FICLONERANGE
> > > +collapse               fallocate collapse_range
> > > +compress               file compression
> > > +convert                        btrfs ext[34] conversion tool
> > > +copy                   xfs_copy functionality
> > > +copy_range             copy_file_range syscall
> > > +copyup                 overlayfs copyup support
> >
> > The tests in this group exercise copy up.
> > There is no such thing as overlayfs without "copyup support",
> > so guess my point is - remove the word "support"
>
> OK.
>
> > > +dangerous              dangerous test that can crash the system
> > > +dangerous_bothrepair   fuzzers to evaluate xfs_scrub + xfs_repair repair
> > > +dangerous_fuzzers      fuzzers that can crash your computer
> > > +dangerous_norepair     fuzzers to evaluate kernel metadata verifiers
> > > +dangerous_online_repair        fuzzers to evaluate xfs_scrub online repair
> > > +dangerous_repair       fuzzers to evaluate xfs_repair offline repair
> > > +dangerous_scrub                fuzzers to evaluate xfs_scrub checking
> > > +data                   data loss checkers
> > > +dax                    direct access mode for persistent memory files
> > > +db                     xfs_db functional tests
> > > +dedupe                 FIEDEDUPERANGE ioctl
> > > +defrag                 filesystem defragmenters
> > > +dir                    directory test functions
> > > +dump                   dump and restore utilities
> > > +eio                    IO error reporting
> > > +encrypt                        encrypted file contents
> > > +enospc                 ENOSPC error reporting
> > > +exportfs               file handles
> > > +filestreams            XFS filestreams allocator
> > > +freeze                 filesystem freeze tests
> > > +fsck                   general fsck tests
> > > +fsmap                  FS_IOC_GETFSMAP ioctl
> > > +fsr                    XFS free space reorganizer
> > > +fuzzers                        filesystem fuzz tests
> > > +growfs                 increasing the size of a filesystem
> > > +hardlink               hardlinks
> > > +health                 XFS health reporting
> > > +idmapped               idmapped mount functionality
> > > +inobtcount             XFS inode btree count tests
> > > +insert                 fallocate insert_range
> > > +ioctl                  general ioctl tests
> > > +io_uring               general io_uring async io tests
> > > +label                  filesystem labelling
> > > +limit                  resource limits
> > > +locks                  file locking
> > > +log                    metadata logging
> > > +logprint               xfs_logprint functional tests
> > > +long_rw                        long-soak read write IO path exercisers
> > > +metacopy               overlayfs metadata-only copy-up
> > > +metadata               filesystem metadata update exercisers
> > > +metadump               xfs_metadump/xfs_mdrestore functionality
> > > +mkfs                   filesystem formatting tools
> > > +mount                  mount option and functionality checks
> > > +nested                 nested overlayfs instances
> > > +nfs4_acl               NFSv4 access control lists
> > > +nonsamefs              overlayfs layers on different filesystems
> > > +online_repair          online repair functionality tests
> > > +other                  dumping ground, do not add more tests to this group
> > > +overlay                        using overlayfs on top of FSTYP
> >
> > This description is a bit confusing, because the recommended
> > way to run overlayfs tests as described in README.overlay is
> > to set FSTYP=xfs and run ./check -overlay
> >
> > I'm struggling for a better description but perhaps:
> > "using overlayfs regardless of ./check -overlay flag"?
>
> Hmm.  Since I'm the author of the only test that uses this tag, I guess
> I'm the authority (ha!) on what the name actually means.
>
> That test (generic/631) is a regression test for a XFS whiteout handling
> bug that can only be reproduced by layering overlayfs atop xfs.
> Overlayfs is incidental to reproducing the XFS bug, but AFAIK overlayfs
> is the only in-kernel user of whiteout, which is why it's critical here.
>
> It's not right to make it "_supported_fs overlay" because we're not
> testing overlayfs functionality; we're merely using it as a stick to
> poke another filesystem.

Yes. I know.
Note that while this is the only case of _require_extra_fs overaly
there is another case of _require_extra_fs ext2 (xfs/049)

>
> How about: "regression tests that require the use of overlayfs in a
> targetted configuration" ?
>

TBH, I do not think it is wise to tag the test by the test method
rather than the tested functionality.

What is more likely?
that a tester wants to run all tests that use overlay over FSTYP?
Or that a tester wants to run all tests to verify whiteout related
behavior after changing whiteout related code?

I suggest that you re-tag this test as 'whiteout', which is documented
already.

If you want to be more specific, you can create a group
rename_whiteout, because RENAME_WHITEOUT is the vfs
interface that this test is actually exercising.

Thanks,
Amir.
Darrick J. Wong Sept. 2, 2021, 3:03 p.m. UTC | #5
On Thu, Sep 02, 2021 at 07:49:51AM +0300, Amir Goldstein wrote:
> On Wed, Sep 1, 2021 at 7:43 PM Darrick J. Wong <djwong@kernel.org> wrote:
> >
> > On Wed, Sep 01, 2021 at 07:46:01AM +0300, Amir Goldstein wrote:
> > > On Wed, Sep 1, 2021 at 3:37 AM Darrick J. Wong <djwong@kernel.org> wrote:
> > > >
> > > > From: Darrick J. Wong <djwong@kernel.org>
> > > >
> > > > Create a file to document the purpose of each test group that is
> > > > currently defined in fstests, and add a build script to check that every
> > > > group mentioned in the tests is also mentioned in the documentation.
> > > >
> > >
> > > This is awesome and long due.
> > > Thanks for doing that!
> > >
> > > Minor nits about overlayfs groups below...
> >
> > Heh, yeah, thanks for making corrections. :)
> >
> > > > Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> > > > ---
> > > >  doc/group-names.txt    |  136 ++++++++++++++++++++++++++++++++++++++++++++++++
> > > >  include/buildgrouplist |    1
> > > >  tools/check-groups     |   33 ++++++++++++
> > > >  3 files changed, 170 insertions(+)
> > > >  create mode 100644 doc/group-names.txt
> > > >  create mode 100755 tools/check-groups
> > > >
> > > >
> > > > diff --git a/doc/group-names.txt b/doc/group-names.txt
> > > > new file mode 100644
> > > > index 00000000..ae517328
> > > > --- /dev/null
> > > > +++ b/doc/group-names.txt
> > > > @@ -0,0 +1,136 @@
> > > > +======================= =======================================================
> > > > +Group Name:            Description:
> > > > +======================= =======================================================
> > > > +all                    All known tests, automatically generated by ./check at
> > > > +                       runtime
> > > > +auto                   Tests that should be run automatically.  These should
> > > > +                       not require more than ~5 minutes to run.
> > > > +quick                  Tests that should run in under 30 seconds.
> > > > +deprecated             Old tests that should not be run.
> > > > +
> > > > +acl                    Access Control Lists
> > > > +admin                  xfs_admin functionality
> > > > +aio                    general libaio async io tests
> > > > +atime                  file access time
> > > > +attr                   extended attributes
> > > > +attr2                  xfs v2 extended aributes
> > > > +balance                        btrfs tree rebalance
> > > > +bigtime                        timestamps beyond the year 2038
> > > > +blockdev               block device functionality
> > > > +broken                 broken tests
> > > > +cap                    Linux capabilities
> > > > +casefold               directory name casefolding
> > > > +ci                     ASCII case-insensitive directory name lookups
> > > > +clone                  FICLONE/FICLONERANGE ioctls
> > > > +clone_stress           stress testing FICLONE/FICLONERANGE
> > > > +collapse               fallocate collapse_range
> > > > +compress               file compression
> > > > +convert                        btrfs ext[34] conversion tool
> > > > +copy                   xfs_copy functionality
> > > > +copy_range             copy_file_range syscall
> > > > +copyup                 overlayfs copyup support
> > >
> > > The tests in this group exercise copy up.
> > > There is no such thing as overlayfs without "copyup support",
> > > so guess my point is - remove the word "support"
> >
> > OK.
> >
> > > > +dangerous              dangerous test that can crash the system
> > > > +dangerous_bothrepair   fuzzers to evaluate xfs_scrub + xfs_repair repair
> > > > +dangerous_fuzzers      fuzzers that can crash your computer
> > > > +dangerous_norepair     fuzzers to evaluate kernel metadata verifiers
> > > > +dangerous_online_repair        fuzzers to evaluate xfs_scrub online repair
> > > > +dangerous_repair       fuzzers to evaluate xfs_repair offline repair
> > > > +dangerous_scrub                fuzzers to evaluate xfs_scrub checking
> > > > +data                   data loss checkers
> > > > +dax                    direct access mode for persistent memory files
> > > > +db                     xfs_db functional tests
> > > > +dedupe                 FIEDEDUPERANGE ioctl
> > > > +defrag                 filesystem defragmenters
> > > > +dir                    directory test functions
> > > > +dump                   dump and restore utilities
> > > > +eio                    IO error reporting
> > > > +encrypt                        encrypted file contents
> > > > +enospc                 ENOSPC error reporting
> > > > +exportfs               file handles
> > > > +filestreams            XFS filestreams allocator
> > > > +freeze                 filesystem freeze tests
> > > > +fsck                   general fsck tests
> > > > +fsmap                  FS_IOC_GETFSMAP ioctl
> > > > +fsr                    XFS free space reorganizer
> > > > +fuzzers                        filesystem fuzz tests
> > > > +growfs                 increasing the size of a filesystem
> > > > +hardlink               hardlinks
> > > > +health                 XFS health reporting
> > > > +idmapped               idmapped mount functionality
> > > > +inobtcount             XFS inode btree count tests
> > > > +insert                 fallocate insert_range
> > > > +ioctl                  general ioctl tests
> > > > +io_uring               general io_uring async io tests
> > > > +label                  filesystem labelling
> > > > +limit                  resource limits
> > > > +locks                  file locking
> > > > +log                    metadata logging
> > > > +logprint               xfs_logprint functional tests
> > > > +long_rw                        long-soak read write IO path exercisers
> > > > +metacopy               overlayfs metadata-only copy-up
> > > > +metadata               filesystem metadata update exercisers
> > > > +metadump               xfs_metadump/xfs_mdrestore functionality
> > > > +mkfs                   filesystem formatting tools
> > > > +mount                  mount option and functionality checks
> > > > +nested                 nested overlayfs instances
> > > > +nfs4_acl               NFSv4 access control lists
> > > > +nonsamefs              overlayfs layers on different filesystems
> > > > +online_repair          online repair functionality tests
> > > > +other                  dumping ground, do not add more tests to this group
> > > > +overlay                        using overlayfs on top of FSTYP
> > >
> > > This description is a bit confusing, because the recommended
> > > way to run overlayfs tests as described in README.overlay is
> > > to set FSTYP=xfs and run ./check -overlay
> > >
> > > I'm struggling for a better description but perhaps:
> > > "using overlayfs regardless of ./check -overlay flag"?
> >
> > Hmm.  Since I'm the author of the only test that uses this tag, I guess
> > I'm the authority (ha!) on what the name actually means.
> >
> > That test (generic/631) is a regression test for a XFS whiteout handling
> > bug that can only be reproduced by layering overlayfs atop xfs.
> > Overlayfs is incidental to reproducing the XFS bug, but AFAIK overlayfs
> > is the only in-kernel user of whiteout, which is why it's critical here.
> >
> > It's not right to make it "_supported_fs overlay" because we're not
> > testing overlayfs functionality; we're merely using it as a stick to
> > poke another filesystem.
> 
> Yes. I know.
> Note that while this is the only case of _require_extra_fs overaly
> there is another case of _require_extra_fs ext2 (xfs/049)
> 
> >
> > How about: "regression tests that require the use of overlayfs in a
> > targetted configuration" ?
> >
> 
> TBH, I do not think it is wise to tag the test by the test method
> rather than the tested functionality.

<nod> It seemed kinda awkward to me.

> What is more likely?
> that a tester wants to run all tests that use overlay over FSTYP?
> Or that a tester wants to run all tests to verify whiteout related
> behavior after changing whiteout related code?
> 
> I suggest that you re-tag this test as 'whiteout', which is documented
> already.

Ooh!  That's a much better suggestion.  I'll do that instead! :)

> If you want to be more specific, you can create a group
> rename_whiteout, because RENAME_WHITEOUT is the vfs
> interface that this test is actually exercising.

Eh, if we want to split the groups someday we can always revisit it.

Thanks for the suggestion; I'll have a v2 series out shortly.

--D

> 
> Thanks,
> Amir.
diff mbox series

Patch

diff --git a/doc/group-names.txt b/doc/group-names.txt
new file mode 100644
index 00000000..ae517328
--- /dev/null
+++ b/doc/group-names.txt
@@ -0,0 +1,136 @@ 
+======================= =======================================================
+Group Name:		Description:
+======================= =======================================================
+all			All known tests, automatically generated by ./check at
+			runtime
+auto			Tests that should be run automatically.  These should
+			not require more than ~5 minutes to run.
+quick			Tests that should run in under 30 seconds.
+deprecated		Old tests that should not be run.
+
+acl			Access Control Lists
+admin			xfs_admin functionality
+aio			general libaio async io tests
+atime			file access time
+attr			extended attributes
+attr2			xfs v2 extended aributes
+balance			btrfs tree rebalance
+bigtime			timestamps beyond the year 2038
+blockdev		block device functionality
+broken			broken tests
+cap			Linux capabilities
+casefold		directory name casefolding
+ci			ASCII case-insensitive directory name lookups
+clone			FICLONE/FICLONERANGE ioctls
+clone_stress		stress testing FICLONE/FICLONERANGE
+collapse		fallocate collapse_range
+compress		file compression
+convert			btrfs ext[34] conversion tool
+copy			xfs_copy functionality
+copy_range		copy_file_range syscall
+copyup			overlayfs copyup support
+dangerous		dangerous test that can crash the system
+dangerous_bothrepair	fuzzers to evaluate xfs_scrub + xfs_repair repair
+dangerous_fuzzers	fuzzers that can crash your computer
+dangerous_norepair	fuzzers to evaluate kernel metadata verifiers
+dangerous_online_repair	fuzzers to evaluate xfs_scrub online repair
+dangerous_repair	fuzzers to evaluate xfs_repair offline repair
+dangerous_scrub		fuzzers to evaluate xfs_scrub checking
+data			data loss checkers
+dax			direct access mode for persistent memory files
+db			xfs_db functional tests
+dedupe			FIEDEDUPERANGE ioctl
+defrag			filesystem defragmenters
+dir			directory test functions
+dump			dump and restore utilities
+eio			IO error reporting
+encrypt			encrypted file contents
+enospc			ENOSPC error reporting
+exportfs		file handles
+filestreams		XFS filestreams allocator
+freeze			filesystem freeze tests
+fsck			general fsck tests
+fsmap			FS_IOC_GETFSMAP ioctl
+fsr			XFS free space reorganizer
+fuzzers			filesystem fuzz tests
+growfs			increasing the size of a filesystem
+hardlink		hardlinks
+health			XFS health reporting
+idmapped		idmapped mount functionality
+inobtcount		XFS inode btree count tests
+insert			fallocate insert_range
+ioctl			general ioctl tests
+io_uring		general io_uring async io tests
+label			filesystem labelling
+limit			resource limits
+locks			file locking
+log			metadata logging
+logprint		xfs_logprint functional tests
+long_rw			long-soak read write IO path exercisers
+metacopy		overlayfs metadata-only copy-up
+metadata		filesystem metadata update exercisers
+metadump		xfs_metadump/xfs_mdrestore functionality
+mkfs			filesystem formatting tools
+mount			mount option and functionality checks
+nested			nested overlayfs instances
+nfs4_acl		NFSv4 access control lists
+nonsamefs		overlayfs layers on different filesystems
+online_repair		online repair functionality tests
+other			dumping ground, do not add more tests to this group
+overlay			using overlayfs on top of FSTYP
+pattern			specific IO pattern tests
+perms			access control and permission checking
+pipe			pipe functionality
+pnfs			PNFS
+posix			POSIX behavior conformance
+prealloc		fallocate
+preallocrw		fallocate, then read and write
+punch			fallocate punch_hole
+qgroup			btrfs qgroup feature
+quota			filesystem usage quotas
+raid			btrfs RAID
+realtime		XFS realtime volumes
+recoveryloop		crash recovery loops
+redirect		overlayfs redirect_dir feature
+remote			dump and restore with a remote tape
+remount			remounting filesystems
+rename			rename system call
+repair			xfs_repair functional tests
+replace			btrfs device replace
+replay			dm-logwrites replays
+resize			resize2fs functionality tests
+richacl			rich ACL feature
+rmap			XFS reverse mapping exercisers
+rotate			overlayfs feature of some sort
+rw			read/write IO tests
+samefs			overlayfs when all layers are on the same fs
+scrub			filesystem metadata scrubbers
+seed			btrfs seeded filesystems
+seek			llseek functionality
+send			btrfs send/receive
+shrinkfs		decreasing the size of a filesystem
+shutdown		FS_IOC_SHUTDOWN ioctl
+snapshot		btrfs snapshots
+soak			long soak tests of any kind
+spaceman		xfs_spaceman functional tests
+splice			splice system call
+stress			fsstress filesystem exerciser
+subvol			btrfs subvolumes
+subvolume		btrfs subvolumes (again?)
+swap			swap files
+symlink			symbolic links
+tape			dump and restore with a tape
+thin			thin provisioning
+trim			FITRIM ioctl
+udf			UDF functionality tests
+union			tests from the unionmount test suite
+unlink			O_TMPFILE unlinked files
+unshare			fallocate unshare_range
+v2log			XFS v2 log format tests
+verity			fsverity
+volume			btrfs volume management
+whiteout		overlayfs whiteout functionality
+xino			overlayfs xino feature
+zero			fallocate zero_range
+zone			zoned (SMR) device support
+======================= =======================================================
diff --git a/include/buildgrouplist b/include/buildgrouplist
index d898efa3..489de965 100644
--- a/include/buildgrouplist
+++ b/include/buildgrouplist
@@ -6,3 +6,4 @@ 
 group.list:
 	@echo " [GROUP] $$PWD/$@"
 	$(Q)$(TOPDIR)/tools/mkgroupfile $@
+	$(Q)$(TOPDIR)/tools/check-groups $(TOPDIR)/doc/group-names.txt $@
diff --git a/tools/check-groups b/tools/check-groups
new file mode 100755
index 00000000..bac45bbd
--- /dev/null
+++ b/tools/check-groups
@@ -0,0 +1,33 @@ 
+#!/bin/bash
+
+# Make sure that all groups listed in a group.list file are mentioned in the
+# group description file.
+
+if [ -z "$1" ] || [ "$1" = "--help" ]; then
+	echo "Usage: $0 path_to_group_names [group.list files...]"
+	exit 1
+fi
+
+groups_doc_file="$1"
+shift
+
+get_group_list() {
+	for file in "$@"; do
+		while read testname groups; do
+			test -z "${testname}" && continue
+			test "${testname:0:1}" = "#" && continue
+
+			echo "${groups}" | tr ' ' '\n'
+		done < "${file}"
+	done | sort | uniq
+}
+
+ret=0
+while read group; do
+	if ! grep -q "^${group}[[:space:]]" "${groups_doc_file}"; then
+		echo "${group}: group not mentioned in documentation." 1>&2
+		ret=1
+	fi
+done < <(get_group_list "$@")
+
+exit "${ret}"