#! /bin/bash # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (c) 2022 Oracle. All Rights Reserved. # # FS QA Test No. 735 # # Populate a XFS filesystem and fuzz the data mappings of every directory type. # Do not fix the filesystem, to test metadata verifiers. # . ./common/preamble _begin_fstest dangerous_fuzzers dangerous_scrub dangerous_norepair _register_cleanup "_cleanup" BUS # Import common functions. . ./common/filter . ./common/populate . ./common/fuzzy # real QA test starts here _supported_fs xfs _require_scratch_xfs_fuzz_fields echo "Format and populate" _scratch_populate_cached nofill > $seqres.full 2>&1 _scratch_xfs_set_dir_fuzz_types # Now fuzz the block maps of each directory type. for dirtype in "${SCRATCH_XFS_DIR_FUZZ_TYPES[@]}"; do echo "Fuzz block map for ${dirtype}" | tee -a $seqres.full # Restore a correct copy of the filesystem before we start a round of # fuzzing. This avoids corruption errors from xfs_db when # _scratch_xfs_fuzz_metadata probes the directory block fields. __scratch_xfs_fuzz_mdrestore _scratch_mount inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_${dirtype}) _scratch_unmount _scratch_xfs_fuzz_metadata 'u*.bmx' 'none' "inode ${inum}" >> $seqres.full echo "Done fuzzing dir map ${dirtype}" done # success, all done status=0 exit