From 0e35c0548abd7fecabb9f85f26b3841f553b0715 Mon Sep 17 00:00:00 2001 From: Anand Jain Date: Thu, 21 Oct 2021 17:17:05 +0800 Subject: [PATCH] btrfs: validate sysfs fsid Validate if the sysfs fsid is the same as fsid as obtained from the superblock. Suggested-by: Josef Bacik Signed-off-by: Anand Jain Reviewed-by: Josef Bacik Signed-off-by: Eryu Guan --- 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 00000000..856cd489 --- /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//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 00000000..58af9173 --- /dev/null +++ b/tests/btrfs/248.out @@ -0,0 +1,2 @@ +QA output created by 248 +Silence is golden -- 2.30.2