From 0804dc173618a1a1fa6d1b916b9b7dcfe72fe1f8 Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Fri, 6 Jul 2018 07:41:46 -0700 Subject: [PATCH] xfs: fuzz every field of every structure and test kernel crashes Fuzz every field of every structure and then try to write the filesystem, to see how many of these writes can crash the kernel. Signed-off-by: Darrick J. Wong Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- common/fuzzy | 54 +++++++++++++++++++++++++++-------------------- tests/xfs/453 | 46 ++++++++++++++++++++++++++++++++++++++++ tests/xfs/453.out | 4 ++++ tests/xfs/454 | 46 ++++++++++++++++++++++++++++++++++++++++ tests/xfs/454.out | 4 ++++ tests/xfs/455 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/455.out | 6 ++++++ tests/xfs/456 | 46 ++++++++++++++++++++++++++++++++++++++++ tests/xfs/456.out | 4 ++++ tests/xfs/457 | 46 ++++++++++++++++++++++++++++++++++++++++ tests/xfs/457.out | 4 ++++ tests/xfs/458 | 46 ++++++++++++++++++++++++++++++++++++++++ tests/xfs/458.out | 4 ++++ tests/xfs/459 | 46 ++++++++++++++++++++++++++++++++++++++++ tests/xfs/459.out | 4 ++++ tests/xfs/460 | 46 ++++++++++++++++++++++++++++++++++++++++ tests/xfs/460.out | 4 ++++ tests/xfs/461 | 47 +++++++++++++++++++++++++++++++++++++++++ tests/xfs/461.out | 4 ++++ tests/xfs/462 | 47 +++++++++++++++++++++++++++++++++++++++++ tests/xfs/462.out | 4 ++++ tests/xfs/463 | 47 +++++++++++++++++++++++++++++++++++++++++ tests/xfs/463.out | 4 ++++ tests/xfs/464 | 48 +++++++++++++++++++++++++++++++++++++++++ tests/xfs/464.out | 4 ++++ tests/xfs/465 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/465.out | 5 +++++ tests/xfs/466 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/466.out | 5 +++++ tests/xfs/467 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/467.out | 5 +++++ tests/xfs/468 | 53 ++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/468.out | 5 +++++ tests/xfs/469 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/469.out | 5 +++++ tests/xfs/470 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/470.out | 5 +++++ tests/xfs/471 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/471.out | 5 +++++ tests/xfs/472 | 52 +++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/472.out | 5 +++++ tests/xfs/473 | 53 ++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/473.out | 5 +++++ tests/xfs/474 | 53 ++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/474.out | 5 +++++ tests/xfs/475 | 53 ++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/475.out | 5 +++++ tests/xfs/476 | 53 ++++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/476.out | 5 +++++ tests/xfs/477 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/477.out | 5 +++++ tests/xfs/478 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/478.out | 5 +++++ tests/xfs/479 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/479.out | 5 +++++ tests/xfs/480 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/480.out | 5 +++++ tests/xfs/481 | 50 +++++++++++++++++++++++++++++++++++++++++++ tests/xfs/481.out | 4 ++++ tests/xfs/482 | 48 +++++++++++++++++++++++++++++++++++++++++ tests/xfs/482.out | 4 ++++ tests/xfs/483 | 48 +++++++++++++++++++++++++++++++++++++++++ tests/xfs/483.out | 4 ++++ tests/xfs/484 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/484.out | 5 +++++ tests/xfs/485 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/485.out | 5 +++++ tests/xfs/486 | 51 ++++++++++++++++++++++++++++++++++++++++++++ tests/xfs/486.out | 5 +++++ tests/xfs/487 | 49 ++++++++++++++++++++++++++++++++++++++++++ tests/xfs/487.out | 4 ++++ tests/xfs/488 | 49 ++++++++++++++++++++++++++++++++++++++++++ tests/xfs/488.out | 4 ++++ tests/xfs/489 | 49 ++++++++++++++++++++++++++++++++++++++++++ tests/xfs/489.out | 4 ++++ tests/xfs/group | 37 ++++++++++++++++++++++++++++++++ 76 files changed, 2072 insertions(+), 23 deletions(-) create mode 100755 tests/xfs/453 create mode 100644 tests/xfs/453.out create mode 100755 tests/xfs/454 create mode 100644 tests/xfs/454.out create mode 100755 tests/xfs/455 create mode 100644 tests/xfs/455.out create mode 100755 tests/xfs/456 create mode 100644 tests/xfs/456.out create mode 100755 tests/xfs/457 create mode 100644 tests/xfs/457.out create mode 100755 tests/xfs/458 create mode 100644 tests/xfs/458.out create mode 100755 tests/xfs/459 create mode 100644 tests/xfs/459.out create mode 100755 tests/xfs/460 create mode 100644 tests/xfs/460.out create mode 100755 tests/xfs/461 create mode 100644 tests/xfs/461.out create mode 100755 tests/xfs/462 create mode 100644 tests/xfs/462.out create mode 100755 tests/xfs/463 create mode 100644 tests/xfs/463.out create mode 100755 tests/xfs/464 create mode 100644 tests/xfs/464.out create mode 100755 tests/xfs/465 create mode 100644 tests/xfs/465.out create mode 100755 tests/xfs/466 create mode 100644 tests/xfs/466.out create mode 100755 tests/xfs/467 create mode 100644 tests/xfs/467.out create mode 100755 tests/xfs/468 create mode 100644 tests/xfs/468.out create mode 100755 tests/xfs/469 create mode 100644 tests/xfs/469.out create mode 100755 tests/xfs/470 create mode 100644 tests/xfs/470.out create mode 100755 tests/xfs/471 create mode 100644 tests/xfs/471.out create mode 100755 tests/xfs/472 create mode 100644 tests/xfs/472.out create mode 100755 tests/xfs/473 create mode 100644 tests/xfs/473.out create mode 100755 tests/xfs/474 create mode 100644 tests/xfs/474.out create mode 100755 tests/xfs/475 create mode 100644 tests/xfs/475.out create mode 100755 tests/xfs/476 create mode 100644 tests/xfs/476.out create mode 100755 tests/xfs/477 create mode 100644 tests/xfs/477.out create mode 100755 tests/xfs/478 create mode 100644 tests/xfs/478.out create mode 100755 tests/xfs/479 create mode 100644 tests/xfs/479.out create mode 100755 tests/xfs/480 create mode 100644 tests/xfs/480.out create mode 100755 tests/xfs/481 create mode 100644 tests/xfs/481.out create mode 100755 tests/xfs/482 create mode 100644 tests/xfs/482.out create mode 100755 tests/xfs/483 create mode 100644 tests/xfs/483.out create mode 100755 tests/xfs/484 create mode 100644 tests/xfs/484.out create mode 100755 tests/xfs/485 create mode 100644 tests/xfs/485.out create mode 100755 tests/xfs/486 create mode 100644 tests/xfs/486.out create mode 100755 tests/xfs/487 create mode 100644 tests/xfs/487.out create mode 100755 tests/xfs/488 create mode 100644 tests/xfs/488.out create mode 100755 tests/xfs/489 create mode 100644 tests/xfs/489.out diff --git a/common/fuzzy b/common/fuzzy index 8c370ae6..988203b1 100644 --- a/common/fuzzy +++ b/common/fuzzy @@ -168,7 +168,7 @@ __fuzz_notify() { # Fuzz one field of some piece of metadata. # First arg is the field name # Second arg is the fuzz verb (ones, zeroes, random, add, sub...) -# Third arg is the repair mode (online, offline, both) +# Third arg is the repair mode (online, offline, both, none) __scratch_xfs_fuzz_field_test() { field="$1" fuzzverb="$2" @@ -189,12 +189,14 @@ __scratch_xfs_fuzz_field_test() { if [ $res -eq 0 ]; then # Try an online scrub unless we're fuzzing ag 0's sb, # which scrub doesn't know how to fix. - echo "++ Online scrub" - if [ "$1" != "sb 0" ]; then - _scratch_scrub -n -a 1 -e continue 2>&1 - res=$? - test $res -eq 0 && \ - (>&2 echo "scrub didn't fail with ${field} = ${fuzzverb}.") + if [ "${repair}" != "none" ]; then + echo "++ Online scrub" + if [ "$1" != "sb 0" ]; then + _scratch_scrub -n -a 1 -e continue 2>&1 + res=$? + test $res -eq 0 && \ + (>&2 echo "scrub didn't fail with ${field} = ${fuzzverb}.") + fi fi # Try fixing the filesystem online?! @@ -221,11 +223,13 @@ __scratch_xfs_fuzz_field_test() { fi # See if repair finds a clean fs - echo "+ Make sure error is gone (offline)" - _scratch_xfs_repair -n 2>&1 - res=$? - test $res -ne 0 && \ - (>&2 echo "offline re-scrub ($res) with ${field} = ${fuzzverb}.") + if [ "${repair}" != "none" ]; then + echo "+ Make sure error is gone (offline)" + _scratch_xfs_repair -n 2>&1 + res=$? + test $res -ne 0 && \ + (>&2 echo "offline re-scrub ($res) with ${field} = ${fuzzverb}.") + fi # See if scrub finds a clean fs echo "+ Make sure error is gone (online)" @@ -234,12 +238,14 @@ __scratch_xfs_fuzz_field_test() { if [ $res -eq 0 ]; then # Try an online scrub unless we're fuzzing ag 0's sb, # which scrub doesn't know how to fix. - echo "++ Online scrub" - if [ "$1" != "sb 0" ]; then - _scratch_scrub -n -e continue 2>&1 - res=$? - test $res -ne 0 && \ - (>&2 echo "online re-scrub ($res) with ${field} = ${fuzzverb}.") + if [ "${repair}" != "none" ]; then + echo "++ Online scrub" + if [ "$1" != "sb 0" ]; then + _scratch_scrub -n -e continue 2>&1 + res=$? + test $res -ne 0 && \ + (>&2 echo "online re-scrub ($res) with ${field} = ${fuzzverb}.") + fi fi # Try modifying the filesystem again! @@ -251,11 +257,13 @@ __scratch_xfs_fuzz_field_test() { fi # See if repair finds a clean fs - echo "+ Re-check the filesystem (offline)" - _scratch_xfs_repair -n 2>&1 - res=$? - test $res -ne 0 && \ - (>&2 echo "re-repair failed ($res) with ${field} = ${fuzzverb}.") + if [ "${repair}" != "none" ]; then + echo "+ Re-check the filesystem (offline)" + _scratch_xfs_repair -n 2>&1 + res=$? + test $res -ne 0 && \ + (>&2 echo "re-repair failed ($res) with ${field} = ${fuzzverb}.") + fi } # Make sure we have all the pieces we need for field fuzzing diff --git a/tests/xfs/453 b/tests/xfs/453 new file mode 100755 index 00000000..c9cc311a --- /dev/null +++ b/tests/xfs/453 @@ -0,0 +1,46 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 453 +# +# Populate a XFS filesystem and fuzz every superblock field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz superblock" +_scratch_xfs_fuzz_metadata '' 'none' 'sb 1' >> $seqres.full +echo "Done fuzzing superblock" + +# success, all done +status=0 +exit diff --git a/tests/xfs/453.out b/tests/xfs/453.out new file mode 100644 index 00000000..4b89bb01 --- /dev/null +++ b/tests/xfs/453.out @@ -0,0 +1,4 @@ +QA output created by 453 +Format and populate +Fuzz superblock +Done fuzzing superblock diff --git a/tests/xfs/454 b/tests/xfs/454 new file mode 100755 index 00000000..356916e8 --- /dev/null +++ b/tests/xfs/454 @@ -0,0 +1,46 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 454 +# +# Populate a XFS filesystem and fuzz every AGF field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz AGF" +_scratch_xfs_fuzz_metadata '' 'none' 'agf 0' >> $seqres.full +echo "Done fuzzing AGF" + +# success, all done +status=0 +exit diff --git a/tests/xfs/454.out b/tests/xfs/454.out new file mode 100644 index 00000000..ba7a8c24 --- /dev/null +++ b/tests/xfs/454.out @@ -0,0 +1,4 @@ +QA output created by 454 +Format and populate +Fuzz AGF +Done fuzzing AGF diff --git a/tests/xfs/455 b/tests/xfs/455 new file mode 100755 index 00000000..02f4c0ca --- /dev/null +++ b/tests/xfs/455 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 455 +# +# Populate a XFS filesystem and fuzz every AGFL field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz AGFL" +_scratch_xfs_fuzz_metadata '' 'none' 'agfl 0' >> $seqres.full +echo "Done fuzzing AGFL" + +echo "Fuzz AGFL flfirst" +flfirst=$(_scratch_xfs_db -c 'agf 0' -c 'p flfirst' | sed -e 's/flfirst = //g') +SCRATCH_XFS_LIST_METADATA_FIELDS="bno[${flfirst}]" _scratch_xfs_fuzz_metadata '' 'none' 'agfl 0' >> $seqres.full +echo "Done fuzzing AGFL flfirst" + +# success, all done +status=0 +exit diff --git a/tests/xfs/455.out b/tests/xfs/455.out new file mode 100644 index 00000000..ff68505f --- /dev/null +++ b/tests/xfs/455.out @@ -0,0 +1,6 @@ +QA output created by 455 +Format and populate +Fuzz AGFL +Done fuzzing AGFL +Fuzz AGFL flfirst +Done fuzzing AGFL flfirst diff --git a/tests/xfs/456 b/tests/xfs/456 new file mode 100755 index 00000000..53e95c58 --- /dev/null +++ b/tests/xfs/456 @@ -0,0 +1,46 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 456 +# +# Populate a XFS filesystem and fuzz every AGI field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz AGI" +_scratch_xfs_fuzz_metadata '' 'none' 'agi 0' >> $seqres.full +echo "Done fuzzing AGI" + +# success, all done +status=0 +exit diff --git a/tests/xfs/456.out b/tests/xfs/456.out new file mode 100644 index 00000000..75c6ef16 --- /dev/null +++ b/tests/xfs/456.out @@ -0,0 +1,4 @@ +QA output created by 456 +Format and populate +Fuzz AGI +Done fuzzing AGI diff --git a/tests/xfs/457 b/tests/xfs/457 new file mode 100755 index 00000000..bc556567 --- /dev/null +++ b/tests/xfs/457 @@ -0,0 +1,46 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 457 +# +# Populate a XFS filesystem and fuzz every bnobt field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz bnobt recs" +_scratch_xfs_fuzz_metadata '' 'none' 'agf 0' 'addr bnoroot' 'addr ptrs[1]' >> $seqres.full +echo "Done fuzzing bnobt recs" + +# success, all done +status=0 +exit diff --git a/tests/xfs/457.out b/tests/xfs/457.out new file mode 100644 index 00000000..9d5c4015 --- /dev/null +++ b/tests/xfs/457.out @@ -0,0 +1,4 @@ +QA output created by 457 +Format and populate +Fuzz bnobt recs +Done fuzzing bnobt recs diff --git a/tests/xfs/458 b/tests/xfs/458 new file mode 100755 index 00000000..9fa143fd --- /dev/null +++ b/tests/xfs/458 @@ -0,0 +1,46 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 458 +# +# Populate a XFS filesystem and fuzz every bnobt key/pointer. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz bnobt keyptr" +_scratch_xfs_fuzz_metadata '' 'none' 'agf 0' 'addr bnoroot' >> $seqres.full +echo "Done fuzzing bnobt keyptr" + +# success, all done +status=0 +exit diff --git a/tests/xfs/458.out b/tests/xfs/458.out new file mode 100644 index 00000000..a6ab9879 --- /dev/null +++ b/tests/xfs/458.out @@ -0,0 +1,4 @@ +QA output created by 458 +Format and populate +Fuzz bnobt keyptr +Done fuzzing bnobt keyptr diff --git a/tests/xfs/459 b/tests/xfs/459 new file mode 100755 index 00000000..55f8ca4c --- /dev/null +++ b/tests/xfs/459 @@ -0,0 +1,46 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 459 +# +# Populate a XFS filesystem and fuzz every cntbt field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz cntbt" +_scratch_xfs_fuzz_metadata '' 'none' 'agf 0' 'addr cntroot' 'addr ptrs[1]' >> $seqres.full +echo "Done fuzzing cntbt" + +# success, all done +status=0 +exit diff --git a/tests/xfs/459.out b/tests/xfs/459.out new file mode 100644 index 00000000..3100f783 --- /dev/null +++ b/tests/xfs/459.out @@ -0,0 +1,4 @@ +QA output created by 459 +Format and populate +Fuzz cntbt +Done fuzzing cntbt diff --git a/tests/xfs/460 b/tests/xfs/460 new file mode 100755 index 00000000..822c8a8d --- /dev/null +++ b/tests/xfs/460 @@ -0,0 +1,46 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 460 +# +# Populate a XFS filesystem and fuzz every inobt field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz inobt" +_scratch_xfs_fuzz_metadata '' 'none' 'agi 1' 'addr root' >> $seqres.full +echo "Done fuzzing inobt" + +# success, all done +status=0 +exit diff --git a/tests/xfs/460.out b/tests/xfs/460.out new file mode 100644 index 00000000..3ca46b4c --- /dev/null +++ b/tests/xfs/460.out @@ -0,0 +1,4 @@ +QA output created by 460 +Format and populate +Fuzz inobt +Done fuzzing inobt diff --git a/tests/xfs/461 b/tests/xfs/461 new file mode 100755 index 00000000..13aa17ff --- /dev/null +++ b/tests/xfs/461 @@ -0,0 +1,47 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 461 +# +# Populate a XFS filesystem and fuzz every finobt field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check +_require_xfs_finobt + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz finobt" +_scratch_xfs_fuzz_metadata '' 'none' 'agi 0' 'addr free_root' >> $seqres.full +echo "Done fuzzing finobt" + +# success, all done +status=0 +exit diff --git a/tests/xfs/461.out b/tests/xfs/461.out new file mode 100644 index 00000000..8d616bf2 --- /dev/null +++ b/tests/xfs/461.out @@ -0,0 +1,4 @@ +QA output created by 461 +Format and populate +Fuzz finobt +Done fuzzing finobt diff --git a/tests/xfs/462 b/tests/xfs/462 new file mode 100755 index 00000000..cf3fdca3 --- /dev/null +++ b/tests/xfs/462 @@ -0,0 +1,47 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 462 +# +# Populate a XFS filesystem and fuzz every rmapbt field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_xfs_scratch_rmapbt +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz rmapbt recs" +_scratch_xfs_fuzz_metadata '' 'none' 'agf 0' 'addr rmaproot' 'addr ptrs[1]' >> $seqres.full +echo "Done fuzzing rmapbt recs" + +# success, all done +status=0 +exit diff --git a/tests/xfs/462.out b/tests/xfs/462.out new file mode 100644 index 00000000..4ff2d33b --- /dev/null +++ b/tests/xfs/462.out @@ -0,0 +1,4 @@ +QA output created by 462 +Format and populate +Fuzz rmapbt recs +Done fuzzing rmapbt recs diff --git a/tests/xfs/463 b/tests/xfs/463 new file mode 100755 index 00000000..bb8f0f71 --- /dev/null +++ b/tests/xfs/463 @@ -0,0 +1,47 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 463 +# +# Populate a XFS filesystem and fuzz every rmapbt key/pointer field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_xfs_scratch_rmapbt +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz rmapbt keyptr" +_scratch_xfs_fuzz_metadata '' 'none' 'agf 0' 'addr rmaproot' >> $seqres.full +echo "Done fuzzing rmapbt keyptr" + +# success, all done +status=0 +exit diff --git a/tests/xfs/463.out b/tests/xfs/463.out new file mode 100644 index 00000000..87d2eef5 --- /dev/null +++ b/tests/xfs/463.out @@ -0,0 +1,4 @@ +QA output created by 463 +Format and populate +Fuzz rmapbt keyptr +Done fuzzing rmapbt keyptr diff --git a/tests/xfs/464 b/tests/xfs/464 new file mode 100755 index 00000000..dd9ae723 --- /dev/null +++ b/tests/xfs/464 @@ -0,0 +1,48 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 464 +# +# Populate a XFS filesystem and fuzz every refcountbt field. +# Do not fix the filesystem, to test metadata verifiers. + +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 +. ./common/reflink + +# real QA test starts here +_supported_os Linux +_supported_fs xfs +_require_scratch_reflink +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz refcountbt" +_scratch_xfs_fuzz_metadata '' 'none' 'agf 0' 'addr refcntroot' >> $seqres.full +echo "Done fuzzing refcountbt" + +# success, all done +status=0 +exit diff --git a/tests/xfs/464.out b/tests/xfs/464.out new file mode 100644 index 00000000..fd949298 --- /dev/null +++ b/tests/xfs/464.out @@ -0,0 +1,4 @@ +QA output created by 464 +Format and populate +Fuzz refcountbt +Done fuzzing refcountbt diff --git a/tests/xfs/465 b/tests/xfs/465 new file mode 100755 index 00000000..a2d938af --- /dev/null +++ b/tests/xfs/465 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 465 +# +# Populate a XFS filesystem and fuzz every btree-format directory inode field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find btree-format dir inode" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_BTREE) +_scratch_unmount + +echo "Fuzz inode" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" >> $seqres.full +echo "Done fuzzing inode" + +# success, all done +status=0 +exit diff --git a/tests/xfs/465.out b/tests/xfs/465.out new file mode 100644 index 00000000..bb560881 --- /dev/null +++ b/tests/xfs/465.out @@ -0,0 +1,5 @@ +QA output created by 465 +Format and populate +Find btree-format dir inode +Fuzz inode +Done fuzzing inode diff --git a/tests/xfs/466 b/tests/xfs/466 new file mode 100755 index 00000000..107d2da7 --- /dev/null +++ b/tests/xfs/466 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 466 +# +# Populate a XFS filesystem and fuzz every extents-format file inode field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find extents-format file inode" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFREG.FMT_EXTENTS) +_scratch_unmount + +echo "Fuzz inode" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" >> $seqres.full +echo "Done fuzzing inode" + +# success, all done +status=0 +exit diff --git a/tests/xfs/466.out b/tests/xfs/466.out new file mode 100644 index 00000000..b1762f24 --- /dev/null +++ b/tests/xfs/466.out @@ -0,0 +1,5 @@ +QA output created by 466 +Format and populate +Find extents-format file inode +Fuzz inode +Done fuzzing inode diff --git a/tests/xfs/467 b/tests/xfs/467 new file mode 100755 index 00000000..e3caddeb --- /dev/null +++ b/tests/xfs/467 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 467 +# +# Populate a XFS filesystem and fuzz every btree-format file inode field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find btree-format file inode" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFREG.FMT_BTREE) +_scratch_unmount + +echo "Fuzz inode" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" >> $seqres.full +echo "Done fuzzing inode" + +# success, all done +status=0 +exit diff --git a/tests/xfs/467.out b/tests/xfs/467.out new file mode 100644 index 00000000..1ca0e21d --- /dev/null +++ b/tests/xfs/467.out @@ -0,0 +1,5 @@ +QA output created by 467 +Format and populate +Find btree-format file inode +Fuzz inode +Done fuzzing inode diff --git a/tests/xfs/468 b/tests/xfs/468 new file mode 100755 index 00000000..19ec0460 --- /dev/null +++ b/tests/xfs/468 @@ -0,0 +1,53 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 468 +# +# Populate a XFS filesystem and fuzz every bmbt block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find bmbt block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFREG.FMT_BTREE) +_scratch_unmount + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" "inode ${inum}") + +echo "Fuzz bmbt" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" "addr u${inode_ver}.bmbt.ptrs[1]" >> $seqres.full +echo "Done fuzzing bmbt" + +# success, all done +status=0 +exit diff --git a/tests/xfs/468.out b/tests/xfs/468.out new file mode 100644 index 00000000..b2df328f --- /dev/null +++ b/tests/xfs/468.out @@ -0,0 +1,5 @@ +QA output created by 468 +Format and populate +Find bmbt block +Fuzz bmbt +Done fuzzing bmbt diff --git a/tests/xfs/469 b/tests/xfs/469 new file mode 100755 index 00000000..2ad91a22 --- /dev/null +++ b/tests/xfs/469 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 469 +# +# Populate a XFS filesystem and fuzz every symlink remote block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find symlink remote block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFLNK.FMT_EXTENTS) +_scratch_unmount + +echo "Fuzz symlink remote block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" 'dblock 0' >> $seqres.full +echo "Done fuzzing symlink remote block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/469.out b/tests/xfs/469.out new file mode 100644 index 00000000..1f514019 --- /dev/null +++ b/tests/xfs/469.out @@ -0,0 +1,5 @@ +QA output created by 469 +Format and populate +Find symlink remote block +Fuzz symlink remote block +Done fuzzing symlink remote block diff --git a/tests/xfs/470 b/tests/xfs/470 new file mode 100755 index 00000000..326924f7 --- /dev/null +++ b/tests/xfs/470 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 470 +# +# Populate a XFS filesystem and fuzz every inline directory inode field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find inline-format dir inode" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_INLINE) +_scratch_unmount + +echo "Fuzz inline-format dir inode" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" >> $seqres.full +echo "Done fuzzing inline-format dir inode" + +# success, all done +status=0 +exit diff --git a/tests/xfs/470.out b/tests/xfs/470.out new file mode 100644 index 00000000..88abc0bc --- /dev/null +++ b/tests/xfs/470.out @@ -0,0 +1,5 @@ +QA output created by 470 +Format and populate +Find inline-format dir inode +Fuzz inline-format dir inode +Done fuzzing inline-format dir inode diff --git a/tests/xfs/471 b/tests/xfs/471 new file mode 100755 index 00000000..73818b61 --- /dev/null +++ b/tests/xfs/471 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 471 +# +# Populate a XFS filesystem and fuzz every block-format dir block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find data-format dir block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_BLOCK) +_scratch_unmount + +echo "Fuzz data-format dir block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" 'dblock 0' >> $seqres.full +echo "Done fuzzing data-format dir block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/471.out b/tests/xfs/471.out new file mode 100644 index 00000000..25e55ff0 --- /dev/null +++ b/tests/xfs/471.out @@ -0,0 +1,5 @@ +QA output created by 471 +Format and populate +Find data-format dir block +Fuzz data-format dir block +Done fuzzing data-format dir block diff --git a/tests/xfs/472 b/tests/xfs/472 new file mode 100755 index 00000000..18c3aa50 --- /dev/null +++ b/tests/xfs/472 @@ -0,0 +1,52 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 472 +# +# Populate a XFS filesystem and fuzz every data-format dir block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find data-format dir block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_LEAF) +blk_sz=$(_get_block_size $SCRATCH_MNT) +_scratch_unmount + +echo "Fuzz data-format dir block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" "dblock 0" >> $seqres.full +echo "Done fuzzing data-format dir block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/472.out b/tests/xfs/472.out new file mode 100644 index 00000000..3f4d23ac --- /dev/null +++ b/tests/xfs/472.out @@ -0,0 +1,5 @@ +QA output created by 472 +Format and populate +Find data-format dir block +Fuzz data-format dir block +Done fuzzing data-format dir block diff --git a/tests/xfs/473 b/tests/xfs/473 new file mode 100755 index 00000000..3a75862e --- /dev/null +++ b/tests/xfs/473 @@ -0,0 +1,53 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 473 +# +# Populate a XFS filesystem and fuzz every leaf1-format dir block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find leaf1-format dir block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_LEAF) +blk_sz=$(_get_block_size $SCRATCH_MNT) +_scratch_unmount + +leaf_offset=$(( (2 ** 35) / blk_sz)) +echo "Fuzz leaf1-format dir block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" "dblock ${leaf_offset}" >> $seqres.full +echo "Done fuzzing leaf1-format dir block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/473.out b/tests/xfs/473.out new file mode 100644 index 00000000..d05dcf9f --- /dev/null +++ b/tests/xfs/473.out @@ -0,0 +1,5 @@ +QA output created by 473 +Format and populate +Find leaf1-format dir block +Fuzz leaf1-format dir block +Done fuzzing leaf1-format dir block diff --git a/tests/xfs/474 b/tests/xfs/474 new file mode 100755 index 00000000..4af88726 --- /dev/null +++ b/tests/xfs/474 @@ -0,0 +1,53 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 474 +# +# Populate a XFS filesystem and fuzz every leafn-format dir block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find leafn-format dir block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_NODE) +blk_sz=$(_get_block_size $SCRATCH_MNT) +_scratch_unmount + +leaf_offset=$(( ( (2 ** 35) / blk_sz) + 1)) +echo "Fuzz leafn-format dir block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" "dblock ${leaf_offset}" >> $seqres.full +echo "Done fuzzing leafn-format dir block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/474.out b/tests/xfs/474.out new file mode 100644 index 00000000..bba106d2 --- /dev/null +++ b/tests/xfs/474.out @@ -0,0 +1,5 @@ +QA output created by 474 +Format and populate +Find leafn-format dir block +Fuzz leafn-format dir block +Done fuzzing leafn-format dir block diff --git a/tests/xfs/475 b/tests/xfs/475 new file mode 100755 index 00000000..9f099659 --- /dev/null +++ b/tests/xfs/475 @@ -0,0 +1,53 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 475 +# +# Populate a XFS filesystem and fuzz every node-format dir block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find node-format dir block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_NODE) +blk_sz=$(_get_block_size $SCRATCH_MNT) +_scratch_unmount + +leaf_offset=$(( (2 ** 35) / blk_sz )) +echo "Fuzz node-format dir block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" "dblock ${leaf_offset}" >> $seqres.full +echo "Done fuzzing node-format dir block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/475.out b/tests/xfs/475.out new file mode 100644 index 00000000..5e643819 --- /dev/null +++ b/tests/xfs/475.out @@ -0,0 +1,5 @@ +QA output created by 475 +Format and populate +Find node-format dir block +Fuzz node-format dir block +Done fuzzing node-format dir block diff --git a/tests/xfs/476 b/tests/xfs/476 new file mode 100755 index 00000000..bf2d2ccd --- /dev/null +++ b/tests/xfs/476 @@ -0,0 +1,53 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 476 +# +# Populate a XFS filesystem and fuzz every freeindex-format dir block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find freeindex-format dir block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_NODE) +blk_sz=$(_get_block_size $SCRATCH_MNT) +_scratch_unmount + +leaf_offset=$(( (2 ** 36) / blk_sz )) +echo "Fuzz freeindex-format dir block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" "dblock ${leaf_offset}" >> $seqres.full +echo "Done fuzzing freeindex-format dir block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/476.out b/tests/xfs/476.out new file mode 100644 index 00000000..a880ae14 --- /dev/null +++ b/tests/xfs/476.out @@ -0,0 +1,5 @@ +QA output created by 476 +Format and populate +Find freeindex-format dir block +Fuzz freeindex-format dir block +Done fuzzing freeindex-format dir block diff --git a/tests/xfs/477 b/tests/xfs/477 new file mode 100755 index 00000000..052005c5 --- /dev/null +++ b/tests/xfs/477 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 477 +# +# Populate a XFS filesystem and fuzz every inline attr inode field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find inline-format attr inode" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/ATTR.FMT_LOCAL) +_scratch_unmount + +echo "Fuzz inline-format attr inode" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" >> $seqres.full +echo "Done fuzzing inline-format attr inode" + +# success, all done +status=0 +exit diff --git a/tests/xfs/477.out b/tests/xfs/477.out new file mode 100644 index 00000000..f3dd00ea --- /dev/null +++ b/tests/xfs/477.out @@ -0,0 +1,5 @@ +QA output created by 477 +Format and populate +Find inline-format attr inode +Fuzz inline-format attr inode +Done fuzzing inline-format attr inode diff --git a/tests/xfs/478 b/tests/xfs/478 new file mode 100755 index 00000000..f6807509 --- /dev/null +++ b/tests/xfs/478 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 478 +# +# Populate a XFS filesystem and fuzz every leaf-format attr block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find leaf-format attr block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/ATTR.FMT_LEAF) +_scratch_unmount + +echo "Fuzz leaf-format attr block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" 'ablock 0' >> $seqres.full +echo "Done fuzzing leaf-format attr block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/478.out b/tests/xfs/478.out new file mode 100644 index 00000000..ff2067f0 --- /dev/null +++ b/tests/xfs/478.out @@ -0,0 +1,5 @@ +QA output created by 478 +Format and populate +Find leaf-format attr block +Fuzz leaf-format attr block +Done fuzzing leaf-format attr block diff --git a/tests/xfs/479 b/tests/xfs/479 new file mode 100755 index 00000000..87ab57b9 --- /dev/null +++ b/tests/xfs/479 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 479 +# +# Populate a XFS filesystem and fuzz every node-format attr block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find node-format attr block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/ATTR.FMT_NODE) +_scratch_unmount + +echo "Fuzz node-format attr block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" "ablock 0" >> $seqres.full +echo "Done fuzzing node-format attr block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/479.out b/tests/xfs/479.out new file mode 100644 index 00000000..320a82ac --- /dev/null +++ b/tests/xfs/479.out @@ -0,0 +1,5 @@ +QA output created by 479 +Format and populate +Find node-format attr block +Fuzz node-format attr block +Done fuzzing node-format attr block diff --git a/tests/xfs/480 b/tests/xfs/480 new file mode 100755 index 00000000..d29f6992 --- /dev/null +++ b/tests/xfs/480 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 480 +# +# Populate a XFS filesystem and fuzz every external attr block field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find external attr block" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/ATTR.FMT_EXTENTS_REMOTE3K) +_scratch_unmount + +echo "Fuzz external attr block" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" "ablock 1" >> $seqres.full +echo "Done fuzzing external attr block" + +# success, all done +status=0 +exit diff --git a/tests/xfs/480.out b/tests/xfs/480.out new file mode 100644 index 00000000..6225f4da --- /dev/null +++ b/tests/xfs/480.out @@ -0,0 +1,5 @@ +QA output created by 480 +Format and populate +Find external attr block +Fuzz external attr block +Done fuzzing external attr block diff --git a/tests/xfs/481 b/tests/xfs/481 new file mode 100755 index 00000000..559b5782 --- /dev/null +++ b/tests/xfs/481 @@ -0,0 +1,50 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 481 +# +# Populate a XFS filesystem and fuzz every rtrmapbt record field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_realtime +_require_xfs_scratch_rmapbt +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +inode_ver=$(_scratch_xfs_get_metadata_field "core.version" 'sb 0' 'addr rrmapino') + +echo "Fuzz rtrmapbt recs" +_scratch_xfs_fuzz_metadata '' 'none' 'sb 0' 'addr rrmapino' "addr u${inode_ver}.rtrmapbt.ptrs[1]" >> $seqres.full +echo "Done fuzzing rtrmapbt recs" + +# success, all done +status=0 +exit diff --git a/tests/xfs/481.out b/tests/xfs/481.out new file mode 100644 index 00000000..d570dc8f --- /dev/null +++ b/tests/xfs/481.out @@ -0,0 +1,4 @@ +QA output created by 481 +Format and populate +Fuzz rtrmapbt recs +Done fuzzing rtrmapbt recs diff --git a/tests/xfs/482 b/tests/xfs/482 new file mode 100755 index 00000000..e9603b94 --- /dev/null +++ b/tests/xfs/482 @@ -0,0 +1,48 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 482 +# +# Populate a XFS filesystem and fuzz every rtrmapbt keyptr field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_realtime +_require_xfs_scratch_rmapbt +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz rtrmapbt keyptrs" +_scratch_xfs_fuzz_metadata '(rtrmapbt)' 'offline' 'sb 0' 'addr rrmapino' >> $seqres.full +echo "Done fuzzing rtrmapbt keyptrs" + +# success, all done +status=0 +exit diff --git a/tests/xfs/482.out b/tests/xfs/482.out new file mode 100644 index 00000000..6bdf7a9f --- /dev/null +++ b/tests/xfs/482.out @@ -0,0 +1,4 @@ +QA output created by 482 +Format and populate +Fuzz rtrmapbt keyptrs +Done fuzzing rtrmapbt keyptrs diff --git a/tests/xfs/483 b/tests/xfs/483 new file mode 100755 index 00000000..5016694e --- /dev/null +++ b/tests/xfs/483 @@ -0,0 +1,48 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 483 +# +# Populate a XFS filesystem and fuzz every refcountbt field. +# Do not fix the filesystem, to test metadata verifiers. + +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 +. ./common/reflink + +# real QA test starts here +_supported_os Linux +_supported_fs xfs +_require_scratch_reflink +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Fuzz refcountbt" +_scratch_xfs_fuzz_metadata '' 'none' 'agf 0' 'addr refcntroot' 'addr ptrs[1]' >> $seqres.full +echo "Done fuzzing refcountbt" + +# success, all done +status=0 +exit diff --git a/tests/xfs/483.out b/tests/xfs/483.out new file mode 100644 index 00000000..07b75b36 --- /dev/null +++ b/tests/xfs/483.out @@ -0,0 +1,4 @@ +QA output created by 483 +Format and populate +Fuzz refcountbt +Done fuzzing refcountbt diff --git a/tests/xfs/484 b/tests/xfs/484 new file mode 100755 index 00000000..30a48ebe --- /dev/null +++ b/tests/xfs/484 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 484 +# +# Populate a XFS filesystem and fuzz every btree-format attr inode field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find btree-format attr inode" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/ATTR.FMT_BTREE) +_scratch_unmount + +echo "Fuzz inode" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" >> $seqres.full +echo "Done fuzzing inode" + +# success, all done +status=0 +exit diff --git a/tests/xfs/484.out b/tests/xfs/484.out new file mode 100644 index 00000000..1295aaad --- /dev/null +++ b/tests/xfs/484.out @@ -0,0 +1,5 @@ +QA output created by 484 +Format and populate +Find btree-format attr inode +Fuzz inode +Done fuzzing inode diff --git a/tests/xfs/485 b/tests/xfs/485 new file mode 100755 index 00000000..e70e4cdb --- /dev/null +++ b/tests/xfs/485 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 485 +# +# Populate a XFS filesystem and fuzz every blockdev inode field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find blockdev inode" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFBLK) +_scratch_unmount + +echo "Fuzz inode" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" >> $seqres.full +echo "Done fuzzing inode" + +# success, all done +status=0 +exit diff --git a/tests/xfs/485.out b/tests/xfs/485.out new file mode 100644 index 00000000..c89c0e5a --- /dev/null +++ b/tests/xfs/485.out @@ -0,0 +1,5 @@ +QA output created by 485 +Format and populate +Find blockdev inode +Fuzz inode +Done fuzzing inode diff --git a/tests/xfs/486 b/tests/xfs/486 new file mode 100755 index 00000000..b5c4adda --- /dev/null +++ b/tests/xfs/486 @@ -0,0 +1,51 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 486 +# +# Populate a XFS filesystem and fuzz every local-format symlink inode field. +# Do not fix the filesystem, to test metadata verifiers. + +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_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 + +echo "Find local-format symlink inode" +_scratch_mount +inum=$(stat -c '%i' $SCRATCH_MNT/S_IFLNK.FMT_LOCAL) +_scratch_unmount + +echo "Fuzz inode" +_scratch_xfs_fuzz_metadata '' 'none' "inode ${inum}" >> $seqres.full +echo "Done fuzzing inode" + +# success, all done +status=0 +exit diff --git a/tests/xfs/486.out b/tests/xfs/486.out new file mode 100644 index 00000000..26f1a362 --- /dev/null +++ b/tests/xfs/486.out @@ -0,0 +1,5 @@ +QA output created by 486 +Format and populate +Find local-format symlink inode +Fuzz inode +Done fuzzing inode diff --git a/tests/xfs/487 b/tests/xfs/487 new file mode 100755 index 00000000..da0dd412 --- /dev/null +++ b/tests/xfs/487 @@ -0,0 +1,49 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 487 +# +# Populate a XFS filesystem and fuzz every user dquot field. +# Do not fix the filesystem, to test metadata verifiers. + +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 +. ./common/quota + +# real QA test starts here +_supported_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check +_require_quota + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 +echo "${MOUNT_OPTIONS}" | grep -q 'usrquota' || _notrun "user quota disabled" + +echo "Fuzz user 0 dquot" +_scratch_xfs_fuzz_metadata '' 'none' "dquot -u 0" >> $seqres.full +echo "Done fuzzing dquot" + +# success, all done +status=0 +exit diff --git a/tests/xfs/487.out b/tests/xfs/487.out new file mode 100644 index 00000000..a7d2926c --- /dev/null +++ b/tests/xfs/487.out @@ -0,0 +1,4 @@ +QA output created by 487 +Format and populate +Fuzz user 0 dquot +Done fuzzing dquot diff --git a/tests/xfs/488 b/tests/xfs/488 new file mode 100755 index 00000000..529252d6 --- /dev/null +++ b/tests/xfs/488 @@ -0,0 +1,49 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 488 +# +# Populate a XFS filesystem and fuzz every group dquot field. +# Do not fix the filesystem, to test metadata verifiers. + +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 +. ./common/quota + +# real QA test starts here +_supported_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check +_require_quota + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 +echo "${MOUNT_OPTIONS}" | grep -q 'grpquota' || _notrun "group quota disabled" + +echo "Fuzz group 0 dquot" +_scratch_xfs_fuzz_metadata '' 'none' "dquot -g 0" >> $seqres.full +echo "Done fuzzing dquot" + +# success, all done +status=0 +exit diff --git a/tests/xfs/488.out b/tests/xfs/488.out new file mode 100644 index 00000000..2fc75d16 --- /dev/null +++ b/tests/xfs/488.out @@ -0,0 +1,4 @@ +QA output created by 488 +Format and populate +Fuzz group 0 dquot +Done fuzzing dquot diff --git a/tests/xfs/489 b/tests/xfs/489 new file mode 100755 index 00000000..e829f01f --- /dev/null +++ b/tests/xfs/489 @@ -0,0 +1,49 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2018 Oracle, Inc. All rights reserved. +# +# FS QA Test No. 489 +# +# Populate a XFS filesystem and fuzz every project dquot field. +# Do not fix the filesystem, to test metadata verifiers. + +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 +. ./common/quota + +# real QA test starts here +_supported_os Linux +_supported_fs xfs +_require_scratch_xfs_fuzz_fields +_disable_dmesg_check +_require_quota + +echo "Format and populate" +_scratch_populate_cached nofill > $seqres.full 2>&1 +echo "${MOUNT_OPTIONS}" | grep -q 'prjquota' || _notrun "project quota disabled" + +echo "Fuzz project 0 dquot" +_scratch_xfs_fuzz_metadata '' 'none' "dquot -p 0" >> $seqres.full +echo "Done fuzzing dquot" + +# success, all done +status=0 +exit diff --git a/tests/xfs/489.out b/tests/xfs/489.out new file mode 100644 index 00000000..7483e642 --- /dev/null +++ b/tests/xfs/489.out @@ -0,0 +1,4 @@ +QA output created by 489 +Format and populate +Fuzz project 0 dquot +Done fuzzing dquot diff --git a/tests/xfs/group b/tests/xfs/group index 39b0e842..976a12c2 100644 --- a/tests/xfs/group +++ b/tests/xfs/group @@ -450,3 +450,40 @@ 450 auto quick rmap 451 auto quick metadata repair 452 auto db +453 dangerous_fuzzers dangerous_norepair +454 dangerous_fuzzers dangerous_norepair +455 dangerous_fuzzers dangerous_norepair +456 dangerous_fuzzers dangerous_norepair +457 dangerous_fuzzers dangerous_norepair +458 dangerous_fuzzers dangerous_norepair +459 dangerous_fuzzers dangerous_norepair +460 dangerous_fuzzers dangerous_norepair +461 dangerous_fuzzers dangerous_norepair +462 dangerous_fuzzers dangerous_norepair +463 dangerous_fuzzers dangerous_norepair +464 dangerous_fuzzers dangerous_norepair +465 dangerous_fuzzers dangerous_norepair +466 dangerous_fuzzers dangerous_norepair +467 dangerous_fuzzers dangerous_norepair +468 dangerous_fuzzers dangerous_norepair +469 dangerous_fuzzers dangerous_norepair +470 dangerous_fuzzers dangerous_norepair +471 dangerous_fuzzers dangerous_norepair +472 dangerous_fuzzers dangerous_norepair +473 dangerous_fuzzers dangerous_norepair +474 dangerous_fuzzers dangerous_norepair +475 dangerous_fuzzers dangerous_norepair +476 dangerous_fuzzers dangerous_norepair +477 dangerous_fuzzers dangerous_norepair +478 dangerous_fuzzers dangerous_norepair +479 dangerous_fuzzers dangerous_norepair +480 dangerous_fuzzers dangerous_norepair +481 dangerous_fuzzers dangerous_norepair +482 dangerous_fuzzers dangerous_norepair +483 dangerous_fuzzers dangerous_norepair +484 dangerous_fuzzers dangerous_norepair +485 dangerous_fuzzers dangerous_norepair +486 dangerous_fuzzers dangerous_norepair +487 dangerous_fuzzers dangerous_norepair +488 dangerous_fuzzers dangerous_norepair +489 dangerous_fuzzers dangerous_norepair -- 2.30.2