From 4da76bfa4b3d3158e6d0b265d486a5c85b8f2263 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Tue, 27 Apr 2021 21:08:43 -0700 Subject: [PATCH] xfs: test what happens when we reset the root dir and it has xattrs Make sure that we can reset the root directory and the xattrs are erased properly. Signed-off-by: Darrick J. Wong Reviewed-by: Brian Foster Signed-off-by: Eryu Guan --- tests/xfs/162 | 63 +++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/162.out | 7 ++++++ tests/xfs/group | 1 + 3 files changed, 71 insertions(+) create mode 100755 tests/xfs/162 create mode 100644 tests/xfs/162.out diff --git a/tests/xfs/162 b/tests/xfs/162 new file mode 100755 index 00000000..e3257a3c --- /dev/null +++ b/tests/xfs/162 @@ -0,0 +1,63 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0-or-later +# Copyright (c) 2021 Oracle. All Rights Reserved. +# +# FS QA Test No. 162 +# +# Make sure that attrs are handled properly when repair has to reset the root +# directory. +# +seq=`basename $0` +seqres=$RESULT_DIR/$seq +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! +trap "_cleanup; exit \$status" 0 1 2 3 7 15 + +_cleanup() +{ + cd / + rm -rf $tmp.* +} + +# get standard environment, filters and checks +. ./common/rc +. ./common/filter +. ./common/populate +. ./common/fuzzy + +# real QA test starts here +_supported_fs xfs +_require_scratch_nocheck + +rm -f $seqres.full + +echo "Format and populate btree attr root dir" +_scratch_mkfs > "$seqres.full" 2>&1 +_scratch_mount + +blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")" +__populate_create_attr "${SCRATCH_MNT}" "$((64 * blksz / 40))" true +_scratch_unmount + +echo "Break the root directory" +_scratch_xfs_fuzz_metadata_field core.mode zeroes 'sb 0' 'addr rootino' >> $seqres.full 2>&1 + +echo "Detect bad root directory" +_scratch_xfs_repair -n >> $seqres.full 2>&1 && \ + echo "Should have detected bad root dir" + +echo "Fix bad root directory" +_scratch_xfs_repair >> $seqres.full 2>&1 + +echo "Detect fixed root directory" +_scratch_xfs_repair -n >> $seqres.full 2>&1 + +echo "Mount test" +_scratch_mount + +# success, all done +status=0 +exit diff --git a/tests/xfs/162.out b/tests/xfs/162.out new file mode 100644 index 00000000..e74c4db2 --- /dev/null +++ b/tests/xfs/162.out @@ -0,0 +1,7 @@ +QA output created by 162 +Format and populate btree attr root dir +Break the root directory +Detect bad root directory +Fix bad root directory +Detect fixed root directory +Mount test diff --git a/tests/xfs/group b/tests/xfs/group index 7d2ab08e..6fa4b660 100644 --- a/tests/xfs/group +++ b/tests/xfs/group @@ -159,6 +159,7 @@ 159 auto quick bigtime 160 auto quick bigtime 161 auto quick bigtime quota +162 auto quick attr repair 164 rw pattern auto prealloc quick 165 rw pattern auto prealloc quick 166 rw metadata auto quick -- 2.39.5