try="$try $seqnum"
                n_try=`expr $n_try + 1`
                _check_test_fs
+               test -f ${RESULT_DIR}/require_scratch && _check_scratch_fs
+               rm -f ${RESULT_DIR}/require_scratch
            fi
 
            seq="after_$seqnum"
 
             exit 1
         fi
     fi
+    touch ${RESULT_DIR}/require_scratch
 }
 
 # this test needs a logdev
 
 _scratch_mount "-o compress-force=no"
 __workout
 _scratch_unmount
-_check_scratch_fs
 
 echo "*** done"
 status=0 ; exit
 
 _run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap
 run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2
 
-_check_scratch_fs
-
 status=0
 exit
 
 _run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap
 run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2
 
-_check_scratch_fs
-
 status=0
 exit
 
 _run_btrfs_util_prog receive $SCRATCH_MNT -f $tmp/2.snap
 run_check $FSSUM_PROG -r $tmp/2.fssum $SCRATCH_MNT/mysnap2
 
-_check_scratch_fs
-
 status=0
 exit
 
 md5sum $SCRATCH_MNT/mysnap1/foo | _filter_scratch
 md5sum $SCRATCH_MNT/mysnap2/foo | _filter_scratch
 
-_check_scratch_fs
-
 status=0
 exit
 
 # the file's size.
 $XFS_IO_PROG -r -c "fiemap -v" $SCRATCH_MNT/mysnap2/foo | _filter_fiemap
 
-_check_scratch_fs
-
 status=0
 exit
 
 touch $SCRATCH_MNT/sv1/file2
 $BTRFS_UTIL_PROG property get $SCRATCH_MNT/sv1/file2 compression
 
-_check_scratch_fs
-
 status=0
 exit
 
 _run_btrfs_util_prog receive $SCRATCH_MNT -f $send_files_dir/1.snap
 run_check $FSSUM_PROG -r $send_files_dir/1.fssum $SCRATCH_MNT/mysnap1
 
-_check_scratch_fs
-
 status=0
 exit
 
 _run_btrfs_util_prog receive $SCRATCH_MNT -f $send_files_dir/1.snap
 run_check $FSSUM_PROG -r $send_files_dir/1.fssum $SCRATCH_MNT/mysnap1
 
-_check_scratch_fs
-
 status=0
 exit
 
 _run_btrfs_util_prog receive $SCRATCH_MNT -f $send_files_dir/2.snap
 run_check $FSSUM_PROG -r $send_files_dir/2.fssum $SCRATCH_MNT/mysnap2
 
-_check_scratch_fs
-
 status=0
 exit
 
 [ -e $SCRATCH_MNT/testdir ] && \
        echo "Directory testdir was supposed to be deleted after incremental send!"
 
-_check_scratch_fs
-
 status=0
 exit
 
        exit
 fi
 echo "Check filesystem"
-_check_scratch_fs
-status=$?
+status=0
 exit
 
        status=1
        exit
 fi
-_check_scratch_fs
-status=$?
+status=0
 
        status=1
        exit
 fi
-_check_scratch_fs
-status=$?
+status=0
 exit
 
        status=1
        exit
 fi
-_check_scratch_fs
-status=$?
+status=0
 exit
 
        status=1
        exit
 fi
-_check_scratch_fs
-status=$?
+status=0
 exit
 
        # perform mount/umount, after that all errors should be fixed
        run_check _scratch_mount
        run_check _scratch_unmount
-       _check_scratch_fs
 }
 
 # real QA test starts here
 
        let i=$i+1
 done
 _scratch_unmount
-_check_scratch_fs
 
 status=0
 exit
 
 # wait for fsstresses to finish
 wait
 
-_check_scratch_fs
-
 exit 1
 
 echo "run fsstress with args: $FSSTRESS_ARGS" >>$seqres.full
 $FSSTRESS_PROG $FSSTRESS_ARGS >>$seqres.full
 _lets_get_pidst
-_check_scratch_fs
 
 echo "*** done"
 status=0
 
        # -w ensures that the only ops are ones which cause write I/O
        FSSTRESS_ARGS=`_scale_fsstress_args -d $SCRATCH_MNT -w -p $procs -n $nops $FSSTRESS_AVOID`
        $FSSTRESS_PROG $FSSTRESS_ARGS >>$seqres.full
-       _check_scratch_fs
 }
 
 echo "*** test out-of-space handling for random write operations"
 
 
 cd /
 
-# Check the filesystem
-_check_scratch_fs
-
-# optional stuff if your test has verbose output to help resolve problems
-#echo
-#echo "If failure, check $seqres.full (this) and $seqres.full.ok (reference)"
-
 # success, all done
 status=0
 exit
 
 _acl_list largeaclfile | _filter_aces_notypes
 
 #-------------------------------------------------------
-
-if [ "$FSTYP" == "udf" ]; then
-    cd /
-    umount $TARGET_DIR
-    # Check the filesystem
-    _check_scratch_fs
-fi
 # success, all done
 status=0
 exit
 
 diff -qr $POPULATED_DIR ${TEST_DIR}${POPULATED_DIR}
 
 cd /
-_check_scratch_fs
 
 status=0
 exit
 
 umount $SCRATCH_MNT
 echo 
 echo Checking filesystem
-_check_scratch_fs
-_scratch_mount
 
 status=$?
 exit
 
 
 umount $SCRATCH_DEV
 
-_check_test_fs
-_check_scratch_fs
-
 exit 
 
     echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX > $SCRATCH_MNT/$i
 done
 
-_check_scratch_fs
-
 # success, all done
 echo "*** done"
 status=0
 
        status=1
        exit
 fi
-_check_scratch_fs
-status=$?
+status=0
 exit
 
        status=1
        exit
 fi
-_check_scratch_fs
-status=$?
+status=0
 exit
 
 
 _do_workload
 
-_check_scratch_fs
-status=$?
+status=0
 exit
 
        status=1
        exit
 fi
-_check_scratch_fs
-status=$?
+status=0
 exit
 
        status=1
        exit
 fi
-_check_scratch_fs
-status=$?
+status=0
 exit
 
 $XFS_IO_PROG -f -c "falloc 0 6g" $SCRATCH_MNT/testfile.$seq >>$seqres.full 2>&1
 
 _scratch_unmount
-_check_scratch_fs
 status=0
 exit
 
 
 do_workload
 
-_check_scratch_fs
 status=0
 exit
 
        _ls_l $SCRATCH_MNT | tail -n +2 | awk '{ print $1, $9 }'
        _ls_l $SCRATCH_MNT/bar | tail -n +2 | awk '{ print $1, $9 }'
        _unmount_flakey
-       _check_scratch_fs $FLAKEY_DEV
-       [ $? -ne 0 ] && _fatal "fsck failed"
 }
 
 _scratch_mkfs >> $seqres.full 2>&1
 
        _mount_flakey
        md5sum $SCRATCH_MNT/bar | _filter_scratch
        _unmount_flakey
-       _check_scratch_fs $FLAKEY_DEV
-       [ $? -ne 0 ] && _fatal "fsck failed"
 }
 
 _scratch_mkfs >> $seqres.full 2>&1
 
 rm -rf $SCRATCH_MNT/testdir
 echo "Inode status after deleting all test files" >>$seqres.full
 $DF_PROG -i $SCRATCH_MNT >>$seqres.full
-_check_scratch_fs
 
 status=0
 exit
 
        exit
 fi
 echo "Check filesystem"
-_check_scratch_fs
-status=$?
+status=0
 exit
 
 _corrupt_finobt_root $SCRATCH_DEV
 
 _scratch_xfs_repair 2>&1 | _filter_repair
-_check_scratch_fs
 
 status=0
 exit
 
 wait
 
 umount $SCRATCH_MNT
-_check_scratch_fs
 
 status=0
 exit
 
 rm -rf $SCRATCH_MNT/dir*
 
 umount $SCRATCH_MNT
-_check_scratch_fs
 
 status=0
 exit
 
 echo $orig_sp_time > /proc/sys/fs/xfs/speculative_prealloc_lifetime
 
 umount $SCRATCH_MNT
-_check_scratch_fs
 
 status=0
 exit
 
        _full "umount"
        umount $SCRATCH_DEV >>$seqfull 2>&1 \
                || _fail "umount failed"
-
-       echo "*** check FS"
-       _check_scratch_fs
 }
 
 #_verify_fs 1
 
  Mode: (0123/l--x-w--wx) Uid: (0) Gid: (0)
 Device: <DEVICE> Inode: <INODE> Links: 1 
 *** unmount FS
-*** check FS
 *** done
 *** unmount
 
 fi
 
 # pv 801241 causes corruption here (inode left in agi_unlinked list)
-_check_scratch_fs
-
 echo "*** done"
 # happy exit
 status=0
 
     status=1; exit
 fi
 echo "done"
-_do "Checking filesystem" "_check_scratch_fs"
 
 # success, all done
 echo "xfs_fsr tests passed."
 
 Run xfs_fsr on filesystem... done
 Check fill file... done
 Check large file... done
-Checking filesystem... done
 xfs_fsr tests passed.
 
 echo "logprint after mount and replay..."
 _print_logstate
 
-if _check_scratch_fs; then
-    echo "filesystem is checked ok"
-else
-    echo "filesystem is NOT ok"
-fi
-
 # success, all done
 status=0
 exit
 
 unmount
 logprint after mount and replay...
 clean log
-filesystem is checked ok
 
 wait   # stop for any remaining stress processes
 
 umount $SCRATCH_DEV
-_check_scratch_fs
 
 status=0
 exit
 
 done
 wait
 
-_check_scratch_fs
-
 status=0
 exit
 
 _scratch_mount >> $seqres.full 2>&1 \
     || _fail "mount failed"
 
-# should now be peaches
-_check_scratch_fs
-
 # success, all done
 status=0
 exit
 
 _scratch_mount >> $seqres.full 2>&1 \
     || _fail "mount failed"
 
-# should now be peaches
-_check_scratch_fs
-
 # success, all done
 status=0
 exit
 
 xfs_repair  $SCRATCH_DEV >> $seqres.full 2>&1
 echo "===== END of xfs_repair =====" >> $seqres.full
 
-#if _check_scratch_fs; then
-#      status=0
-#else
-#      status=1
-#fi
 exit
 
 killall -q $FSSTRESS_PROG
 wait
 
-_check_scratch_fs
 status=0
 exit
 
 done
 wait
 umount $SCRATCH_MNT
-_check_scratch_fs
 
 echo "No output is good. Failures are loud."