Re: [PATCH v6] btrfs: test block group size class loading logic

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



On Thu, Feb 16, 2023 at 12:11:39PM +0000, Filipe Manana wrote:
> On Wed, Feb 15, 2023 at 11:37 PM Boris Burkov <boris@xxxxxx> wrote:
> >
> > Add a new test which checks that size classes in freshly loaded block
> > groups after a cycle mount match size classes before going down
> >
> > Depends on the kernel patch:
> > btrfs: add size class stats to sysfs
> >
> > Signed-off-by: Boris Burkov <boris@xxxxxx>
> > ---
> > Changelog:
> > v6:
> > Actually include changes for v5 in the commit.
> > v5:
> > Instead of using _fixed_by_kernel_commit, use require_fs_sysfs to handle
> > the needed sysfs file. The test is skipped on kernels without the file
> > and runs correctly on new ones.
> > v4:
> > Fix dumb typo in _fixed_by_kernel_commit (left out leading underscore
> > copy+pasting). Re-tested happy and sad case...
> >
> > v3:
> > Re-add fixed_by_kernel_commit, but for the stats patch which is
> > required, but not a fix in the strictest sense.
> >
> > v2:
> > Drop the fixed_by_kernel_commit since the fix is not out past the btrfs
> > development tree, so the fix is getting rolled in to the original broken
> > commit. Modified the commit message to note the dependency on the new
> > sysfs counters.
> >
> >
> >  tests/btrfs/283     | 50 +++++++++++++++++++++++++++++++++++++++++++++
> >  tests/btrfs/283.out |  2 ++
> >  2 files changed, 52 insertions(+)
> >  create mode 100755 tests/btrfs/283
> >  create mode 100644 tests/btrfs/283.out
> >
> > diff --git a/tests/btrfs/283 b/tests/btrfs/283
> > new file mode 100755
> > index 00000000..2c26b41e
> > --- /dev/null
> > +++ b/tests/btrfs/283
> > @@ -0,0 +1,50 @@
> > +#! /bin/bash
> > +# SPDX-License-Identifier: GPL-2.0
> > +# Copyright (c) 2023 Meta Platforms, Inc.  All Rights Reserved.
> > +#
> > +# FS QA Test 283
> > +#
> > +# Test that mounting a btrfs filesystem properly loads block group size classes.
> > +#
> > +. ./common/preamble
> > +_begin_fstest auto quick mount
> 
> I'm still curious why the 'mount' group, and I've asked for that before.
> 
> We aren't testing a new mount option, so it feels weird for me.

Agree, the "mount" group looks not make sense.

The btrfs/283 has been taken in v2023.02.05. So please make a rebase.

The "fixed_by_kernel_commit xxxx" part has been added and removed several times,
does this case need it or not? Or maybe you want a _wants_kernel_commit (just
ask for sure) ?

Others look good to me.

Thanks,
Zorro

> 
> Otherwise, it looks fine now. Thanks.
> 
> > +
> > +sysfs_size_classes() {
> > +       local uuid="$(findmnt -n -o UUID "$SCRATCH_MNT")"
> > +       cat "/sys/fs/btrfs/$uuid/allocation/data/size_classes"
> > +}
> > +
> > +_supported_fs btrfs
> > +_require_scratch
> > +_require_btrfs_fs_sysfs
> > +_require_fs_sysfs allocation/data/size_classes
> > +
> > +f="$SCRATCH_MNT/f"
> > +small=$((16 * 1024))
> > +medium=$((1024 * 1024))
> > +large=$((16 * 1024 * 1024))
> > +
> > +_scratch_mkfs >/dev/null
> > +_scratch_mount
> > +# Write files with extents in each size class
> > +$XFS_IO_PROG -fc "pwrite -q 0 $small" $f.small
> > +$XFS_IO_PROG -fc "pwrite -q 0 $medium" $f.medium
> > +$XFS_IO_PROG -fc "pwrite -q 0 $large" $f.large
> > +# Sync to force the extent allocation
> > +sync
> > +pre=$(sysfs_size_classes)
> > +
> > +# cycle mount to drop the block group cache
> > +_scratch_cycle_mount
> > +
> > +# Another write causes us to actually load the block groups
> > +$XFS_IO_PROG -fc "pwrite -q 0 $large" $f.large.2
> > +sync
> > +
> > +post=$(sysfs_size_classes)
> > +diff <(echo $pre) <(echo $post)
> > +
> > +echo "Silence is golden"
> > +# success, all done
> > +status=0
> > +exit
> > diff --git a/tests/btrfs/283.out b/tests/btrfs/283.out
> > new file mode 100644
> > index 00000000..efb2c583
> > --- /dev/null
> > +++ b/tests/btrfs/283.out
> > @@ -0,0 +1,2 @@
> > +QA output created by 283
> > +Silence is golden
> > --
> > 2.39.1
> >
> 




[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