* [PATCH v2 0/3] fstests: btrfs validate sysfs fsid and usage
@ 2021-10-21 9:17 Anand Jain
2021-10-21 9:17 ` [PATCH v2 1/3] common/btrfs: add _require_btrfs_sysfs_fsid helper Anand Jain
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Anand Jain @ 2021-10-21 9:17 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, josef
v2:
Add more debug log to the _fail per Josef's comment in patch 3.
Add Josef RB to all patches.
---- original cover letter ----
Patch 1 adds a helper to check if the kernel is latest enough to provide
the fsid from the sysfs.
Patch 2 validates the sysfs fsid against the fsid from the sb
Patch 3 is a test case to make sure if the btrfs filesystem usage is
successful on a sprout filesystem with a seed device missing.
Anand Jain (3):
common/btrfs: add _require_btrfs_sysfs_fsid helper
btrfs/248: validate sysfs fsid
btrfs/249: test btrfs filesystem usage command on missing seed device
common/btrfs | 14 ++++++++++
tests/btrfs/248 | 66 ++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/248.out | 2 ++
tests/btrfs/249 | 67 +++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/249.out | 2 ++
5 files changed, 151 insertions(+)
create mode 100755 tests/btrfs/248
create mode 100644 tests/btrfs/248.out
create mode 100755 tests/btrfs/249
create mode 100644 tests/btrfs/249.out
--
2.31.1
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2 1/3] common/btrfs: add _require_btrfs_sysfs_fsid helper
2021-10-21 9:17 [PATCH v2 0/3] fstests: btrfs validate sysfs fsid and usage Anand Jain
@ 2021-10-21 9:17 ` Anand Jain
2021-10-21 9:17 ` [PATCH v2 2/3] btrfs/248: validate sysfs fsid Anand Jain
2021-10-21 9:17 ` [PATCH v2 3/3] btrfs/249: test btrfs filesystem usage command on missing seed device Anand Jain
2 siblings, 0 replies; 4+ messages in thread
From: Anand Jain @ 2021-10-21 9:17 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, josef
It checks if the kernel has the following patch
btrfs: sysfs add devinfo/fsid to retrieve fsid from the device
that added sysfs interface to get fsid.
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
---
common/btrfs | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/common/btrfs b/common/btrfs
index ac880bddf524..5d938c19b56a 100644
--- a/common/btrfs
+++ b/common/btrfs
@@ -445,3 +445,17 @@ _scratch_btrfs_is_zoned()
[ `_zone_type ${SCRATCH_DEV}` != "none" ] && return 0
return 1
}
+
+_require_btrfs_sysfs_fsid()
+{
+ local fsid
+
+ fsid=$($BTRFS_UTIL_PROG filesystem show $TEST_DIR |grep uuid: |\
+ awk '{print $NF}')
+
+ # Check if the kernel has sysfs fsid support.
+ # Following kernel patch adds it:
+ # btrfs: sysfs add devinfo/fsid to retrieve fsid from the device
+ test -f /sys/fs/btrfs/$fsid/devinfo/1/fsid ||\
+ _notrun "Need btrfs sysfs fsid support"
+}
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 2/3] btrfs/248: validate sysfs fsid
2021-10-21 9:17 [PATCH v2 0/3] fstests: btrfs validate sysfs fsid and usage Anand Jain
2021-10-21 9:17 ` [PATCH v2 1/3] common/btrfs: add _require_btrfs_sysfs_fsid helper Anand Jain
@ 2021-10-21 9:17 ` Anand Jain
2021-10-21 9:17 ` [PATCH v2 3/3] btrfs/249: test btrfs filesystem usage command on missing seed device Anand Jain
2 siblings, 0 replies; 4+ messages in thread
From: Anand Jain @ 2021-10-21 9:17 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, josef
Validate if the sysfs fsid is the same as fsid as obtained from the
superblock.
Suggested-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
---
tests/btrfs/248 | 66 +++++++++++++++++++++++++++++++++++++++++++++
tests/btrfs/248.out | 2 ++
2 files changed, 68 insertions(+)
create mode 100755 tests/btrfs/248
create mode 100644 tests/btrfs/248.out
diff --git a/tests/btrfs/248 b/tests/btrfs/248
new file mode 100755
index 000000000000..856cd489d4e4
--- /dev/null
+++ b/tests/btrfs/248
@@ -0,0 +1,66 @@
+#! /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 248
+#
+# Validate if the sysfs devinfo/<devid>/fsid behaves properly
+# Steps:
+# Create a sprout filesystem (an rw device on top of a seed device)
+# Read the seed and sprout devices fsid from the superblock
+# Validate with the sysfs fsid
+
+. ./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_test
+_require_scratch_dev_pool 2
+_require_btrfs_forget_or_module_loadable
+_require_command "$BTRFS_TUNE_PROG" btrfstune
+_require_btrfs_command inspect-internal dump-super
+_require_btrfs_sysfs_fsid
+
+_scratch_dev_pool_get 1
+# use the scratch device as a seed device
+seed_dev=$(echo $SCRATCH_DEV_POOL | $AWK_PROG '{ print $1 }')
+
+# use the spare device as a sprout device
+_spare_dev_get
+
+# create seed device
+_scratch_pool_mkfs >> $seqres.full 2>&1
+$BTRFS_TUNE_PROG -S 1 $seed_dev
+_scratch_mount >> $seqres.full 2>&1
+
+# create a sprout device
+$BTRFS_UTIL_PROG device add -f $SPARE_DEV $SCRATCH_MNT >> $seqres.full 2>&1
+_scratch_unmount
+
+# record the fsid of both seed and sprout devices
+seedfsid=$($BTRFS_UTIL_PROG inspect-internal dump-super $seed_dev |grep ^fsid |\
+ $AWK_PROG '{print $2}')
+sproutfsid=$($BTRFS_UTIL_PROG inspect-internal dump-super $SPARE_DEV |\
+ grep ^fsid |$AWK_PROG '{print $2}')
+
+# validate it with the fsid as shown in the sysfs
+_mount -o device=$seed_dev $SPARE_DEV $SCRATCH_MNT
+
+cat /sys/fs/btrfs/$sproutfsid/devinfo/2/fsid | grep -v $sproutfsid
+cat /sys/fs/btrfs/$sproutfsid/devinfo/1/fsid | grep -v $seedfsid
+
+_scratch_unmount
+_spare_dev_put
+_scratch_dev_pool_put
+
+echo "Silence is golden"
+# success, all done
+status=0
+exit
diff --git a/tests/btrfs/248.out b/tests/btrfs/248.out
new file mode 100644
index 000000000000..58af9173bea3
--- /dev/null
+++ b/tests/btrfs/248.out
@@ -0,0 +1,2 @@
+QA output created by 248
+Silence is golden
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2 3/3] btrfs/249: test btrfs filesystem usage command on missing seed device
2021-10-21 9:17 [PATCH v2 0/3] fstests: btrfs validate sysfs fsid and usage Anand Jain
2021-10-21 9:17 ` [PATCH v2 1/3] common/btrfs: add _require_btrfs_sysfs_fsid helper Anand Jain
2021-10-21 9:17 ` [PATCH v2 2/3] btrfs/248: validate sysfs fsid Anand Jain
@ 2021-10-21 9:17 ` Anand Jain
2 siblings, 0 replies; 4+ messages in thread
From: Anand Jain @ 2021-10-21 9:17 UTC (permalink / raw)
To: fstests; +Cc: linux-btrfs, josef
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@toxicpanda.com>
Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
---
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..7cc4996e387b
--- /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
+
+_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. Check btrfs.ko and btrfs-progs version."
+fi
+
+_scratch_unmount
+_spare_dev_put
+_scratch_dev_pool_put
+
+echo "Silence is golden"
+# success, all done
+status=0
+exit
diff --git a/tests/btrfs/249.out b/tests/btrfs/249.out
new file mode 100644
index 000000000000..b79a5dca8820
--- /dev/null
+++ b/tests/btrfs/249.out
@@ -0,0 +1,2 @@
+QA output created by 249
+Silence is golden
--
2.31.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-10-21 9:17 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-10-21 9:17 [PATCH v2 0/3] fstests: btrfs validate sysfs fsid and usage Anand Jain
2021-10-21 9:17 ` [PATCH v2 1/3] common/btrfs: add _require_btrfs_sysfs_fsid helper Anand Jain
2021-10-21 9:17 ` [PATCH v2 2/3] btrfs/248: validate sysfs fsid Anand Jain
2021-10-21 9:17 ` [PATCH v2 3/3] btrfs/249: test btrfs filesystem usage command on missing seed device Anand Jain
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).