-_require_v2log
-_require_xfs_quota
-
-echo "*** init FS"
-umount $SCRATCH_DEV >/dev/null 2>&1
-
-cat >$tmp.seq.params <<EOF
-# mkfs-opt mount-opt
-# ------------------------------
- version=2 logbsize=32k
- version=2,su=4096 logbsize=32k
- version=2,su=32768 logbsize=32k
- version=2 logbsize=64k
- version=2,su=64k logbsize=64k
- version=2 logbsize=128k
- version=2,su=128k logbsize=128k
- version=2 logbsize=256k
- version=2,su=256k logbsize=256k
-EOF
-
-cat $tmp.seq.params \
-| while read mkfs mnt restofline
-do
- if [ "$mkfs" = "#" ]; then
- continue
- fi
-
- echo "--- mkfs=$mkfs, mnt=$mnt ---"
- export MKFS_OPTIONS="-l $mkfs"
- export MOUNT_OPTIONS="-o $mnt"
-
- # mkfs the FS
- _echofull "mkfs"
- _scratch_mkfs_xfs >>$seq.full 2>&1
- if [ $? -ne 0 ] ; then
- _echofull "mkfs failed: $MKFS_OPTIONS"
- continue
- fi
-
- # mount the FS
- _echofull "mount"
- if ! _scratch_mount -o uquota >>$seq.full 2>&1; then
- _echofull "mount failed: $MOUNT_OPTIONS"
- continue
- fi
-
- # create the metadata
- _do_meta
-
- # check before on what FS should look like
- _echofull "ls -RF SCRATCH_MNT"
- ls -RF $SCRATCH_MNT >$tmp.ls1
-
- _echofull "godown"
- src/godown -v -f $SCRATCH_MNT >> $seq.full
-
- _echofull "unmount"
- umount $SCRATCH_DEV >>$seq.full 2>&1 \
- || _fail "umount failed"
-
- _echofull "logprint after going down..."
- _print_logstate
-
- _full "logprint headers"
- _scratch_xfs_logprint -n >>$seq.full 2>&1
-
- _echofull "mount with replay"
- _scratch_mount -o uquota >>$seq.full 2>&1 \
- || _fail "mount failed: $MOUNT_OPTIONS"
-
- # check on what FS looks like after log recovery
- _echofull "ls -RF SCRATCH_MNT"
- ls -RF $SCRATCH_MNT >$tmp.ls2
-
- _echofull "diff ls before and after"
- diff -us $tmp.ls1 $tmp.ls2 | sed "s#$tmp#TMP#g"
-
- _echofull "unmount"
- umount $SCRATCH_MNT
-
- _echofull "logprint after mount and replay..."
- _print_logstate
-
- if _check_scratch_fs; then
- _echofull "filesystem is checked ok"
- else
- _echofull "filesystem is NOT ok"
- fi
+test -n "${FORCE_FUZZ}" || _require_scratch_xfs_crc
+_require_attrs
+_require_populate_commands
+_require_xfs_db_blocktrash_z_command
+test -z "${FUZZ_ARGS}" && FUZZ_ARGS="-n 8 -3"
+
+rm -f $seqres.full
+TESTDIR="${SCRATCH_MNT}/scratchdir"
+TESTFILE="${TESTDIR}/testfile"
+
+echo "+ create scratch fs"
+_scratch_mkfs_xfs > /dev/null
+
+echo "+ mount fs image"
+_scratch_mount
+blksz="$(stat -f -c '%s' "${SCRATCH_MNT}")"
+
+echo "+ make some files"
+mkdir -p "${TESTDIR}"
+for x in `seq 1 1024`; do
+ touch "${SCRATCH_MNT}/junk.${x}"
+ inode="$(stat -c '%i' "${SCRATCH_MNT}/junk.${x}")"
+ if [ "$x" -gt 512 ] && [ "$((inode % 64))" -eq 0 ]; then
+ mv "${SCRATCH_MNT}/junk.${x}" "${TESTFILE}.1"
+ break
+ fi
+done
+for x in `seq 2 64`; do
+ touch "${TESTFILE}.${x}"