On Wed, Oct 20, 2021 at 03:16:44PM +0800, Anand Jain wrote: > If there is a missing seed device in a sprout, the btrfs filesystem usage > command fails, which is fixed by the following patches: > > btrfs: sysfs add devinfo/fsid to retrieve fsid from the device > btrfs-progs: read fsid from the sysfs in device_is_seed > > Test if it works now after these patches in the kernel and in the > btrfs-progs respectively. > > Suggested-by: Josef Bacik <josef@xxxxxxxxxxxxxx> > Signed-off-by: Anand Jain <anand.jain@xxxxxxxxxx> Shouldn't this use as well? I wish there was a way to detect that btrfs-progs had support for reading it but I suppose this is a good enough gate. Maybe add a > --- > tests/btrfs/249 | 67 +++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/249.out | 2 ++ > 2 files changed, 69 insertions(+) > create mode 100755 tests/btrfs/249 > create mode 100644 tests/btrfs/249.out > > diff --git a/tests/btrfs/249 b/tests/btrfs/249 > new file mode 100755 > index 000000000000..f8f2f07052c6 > --- /dev/null > +++ b/tests/btrfs/249 > @@ -0,0 +1,67 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2021 Anand Jain. All Rights Reserved. > +# Copyright (c) 2021 Oracle. All Rights Reserved. > +# > +# FS QA Test 249 > +# > +# Validate if the command 'btrfs filesystem usage' works with missing seed > +# device > +# Steps: > +# Create a degraded raid1 seed device > +# Create a sprout filesystem (an rw device on top of a seed device) > +# Dump 'btrfs filesystem usage', check it didn't fail > +# > +# Tests btrfs-progs bug fixed by the kernel patch and a btrfs-prog patch > +# btrfs: sysfs add devinfo/fsid to retrieve fsid from the device > +# btrfs-progs: read fsid from the sysfs in device_is_seed > + > +. ./common/preamble > +_begin_fstest auto quick seed volume > + > +# Import common functions. > +# . ./common/filter > + > +# real QA test starts here > + > +# Modify as appropriate. > +_supported_fs btrfs > +_require_scratch_dev_pool 3 > +_require_command "$WIPEFS_PROG" wipefs > +_require_btrfs_forget_or_module_loadable Need _require_btrfs_sysfs_fsid here I think. > + > +_scratch_dev_pool_get 2 > +# use the scratch devices as seed devices > +seed_dev1=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{ print $1 }') > +seed_dev2=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{ print $2 }') > + > +# use the spare device as a sprout device > +_spare_dev_get > +sprout_dev=$SPARE_DEV > + > +# create raid1 seed filesystem > +_scratch_pool_mkfs "-draid1 -mraid1" >> $seqres.full 2>&1 > +$BTRFS_TUNE_PROG -S 1 $seed_dev1 > +$WIPEFS_PROG -a $seed_dev1 >> $seqres.full 2>&1 > +_btrfs_forget_or_module_reload > +_mount -o degraded $seed_dev2 $SCRATCH_MNT >> $seqres.full 2>&1 > + > +# create a sprout device > +$BTRFS_UTIL_PROG device add -f $SPARE_DEV $SCRATCH_MNT >> $seqres.full 2>&1 > + > +# dump filesystem usage if it fails error goes to the bad.out file > +$BTRFS_UTIL_PROG filesystem usage $SCRATCH_MNT >> $seqres.full > +# also check for the error code > +ret=$? > +if [ $ret != 0 ]; then > + _fail "FAILED: btrfs filesystem usage, ret $ret" Can you add "check your btrfs-progs version" here or something? In case I'm an idiot and forget to update btrfs-progs on the overnight xfstests boxes? Thanks, Josef