diff --git a/README b/README
index 477136deb0..024d395318 100644
--- a/README
+++ b/README
@@ -202,10 +202,8 @@ Extra XFS specification:
    xfs_repair -n to check the filesystem; xfs_repair to rebuild metadata
    indexes; and xfs_repair -n (a third time) to check the results of the
    rebuilding.
- - Set FORCE_XFS_CHECK_PROG=yes to have _check_xfs_filesystem run xfs_check
-   to check the filesystem. As of August 2021, xfs_repair finds all
-   filesystem corruptions found by xfs_check, and more, which means that
-   xfs_check is no longer run by default.
+ - The FORCE_XFS_CHECK_PROG option was removed in July 2024, along with all
+   support for xfs_check.
  - Set TEST_XFS_SCRUB_REBUILD=1 to have _check_xfs_filesystem run xfs_scrub in
    "force_repair" mode to rebuild the filesystem; and xfs_repair -n to check
    the results of the rebuilding.
diff --git a/common/fuzzy b/common/fuzzy
index 3cd7da4ae6..0dd88302cd 100644
--- a/common/fuzzy
+++ b/common/fuzzy
@@ -383,17 +383,6 @@ __scratch_xfs_fuzz_field_offline() {
 	test $res -eq 0 && \
 		(>&2 echo "${fuzz_action}: offline scrub didn't fail.")
 
-	# Make sure xfs_repair catches at least as many things as the old
-	# xfs_check did.
-	if [ -n "${SCRATCH_XFS_FUZZ_CHECK}" ]; then
-		__fuzz_notify "+ Detect fuzzed field (xfs_check)"
-		_scratch_xfs_check 2>&1
-		res1=$?
-		if [ $res1 -ne 0 ] && [ $res -eq 0 ]; then
-			(>&2 echo "${fuzz_action}: xfs_repair passed but xfs_check failed ($res1).")
-		fi
-	fi
-
 	# Repair the filesystem offline
 	__fuzz_notify "+ Try to repair the filesystem (offline)"
 	_repair_scratch_fs -P 2>&1
diff --git a/common/xfs b/common/xfs
index 7706b56260..bd40a02ed2 100644
--- a/common/xfs
+++ b/common/xfs
@@ -270,43 +270,6 @@ _xfs_get_fsxattr()
 	echo ${value##fsxattr.${field} = }
 }
 
-# xfs_check script is planned to be deprecated. But, we want to
-# be able to invoke "xfs_check" behavior in xfstests in order to
-# maintain the current verification levels.
-_xfs_check()
-{
-	OPTS=" "
-	DBOPTS=" "
-	USAGE="Usage: xfs_check [-fsvV] [-l logdev] [-i ino]... [-b bno]... special"
-
-	OPTIND=1
-	while getopts "b:fi:l:stvV" c; do
-		case $c in
-			s) OPTS=$OPTS"-s ";;
-			t) OPTS=$OPTS"-t ";;
-			v) OPTS=$OPTS"-v ";;
-			i) OPTS=$OPTS"-i "$OPTARG" ";;
-			b) OPTS=$OPTS"-b "$OPTARG" ";;
-			f) DBOPTS=$DBOPTS" -f";;
-			l) DBOPTS=$DBOPTS" -l "$OPTARG" ";;
-			V) $XFS_DB_PROG -p xfs_check -V
-			   return $?
-			   ;;
-		esac
-	done
-	set -- extra $@
-	shift $OPTIND
-	case $# in
-		1) ${XFS_DB_PROG}${DBOPTS} -F -i -p xfs_check -c "check$OPTS" $1
-		   status=$?
-		   ;;
-		2) echo $USAGE 1>&1
-		   status=2
-		   ;;
-	esac
-	return $status
-}
-
 _scratch_xfs_options()
 {
     local type=$1
@@ -392,16 +355,6 @@ _test_xfs_logprint()
 	$XFS_LOGPRINT_PROG $TEST_OPTIONS $* $TEST_DEV
 }
 
-_scratch_xfs_check()
-{
-	SCRATCH_OPTIONS=""
-	[ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
-		SCRATCH_OPTIONS="-l $SCRATCH_LOGDEV"
-	[ "$LARGE_SCRATCH_DEV" = yes ] && \
-		SCRATCH_OPTIONS=$SCRATCH_OPTIONS" -t"
-	_xfs_check $SCRATCH_OPTIONS $* $SCRATCH_DEV
-}
-
 # Check for secret debugging hooks in xfs_repair
 _require_libxfs_debug_flag() {
 	local hook="$1"
@@ -765,7 +718,7 @@ _xfs_skip_online_rebuild() {
 	touch "$RESULT_DIR/.skip_orebuild"
 }
 
-# run xfs_check and friends on a FS.
+# run xfs_repair and xfs_scrub on a FS.
 _check_xfs_filesystem()
 {
 	local can_scrub=
@@ -856,24 +809,8 @@ _check_xfs_filesystem()
 		ok=0
 	fi
 
-	# xfs_check runs out of memory on large files, so even providing the
-	# test option (-t) to avoid indexing the free space trees doesn't make
-	# it pass on large filesystems. Avoid it.
-	#
-	# As of August 2021, xfs_repair completely supersedes xfs_check's
-	# ability to find corruptions, so we no longer run xfs_check unless
-	# forced to run it.
-	if [ "$LARGE_SCRATCH_DEV" != yes ] && [ "$FORCE_XFS_CHECK_PROG" = "yes" ]; then
-		_xfs_check $extra_log_options $device 2>&1 > $tmp.fs_check
-	fi
-	if [ -s $tmp.fs_check ]; then
-		_log_err "_check_xfs_filesystem: filesystem on $device is inconsistent (c)"
-		echo "*** xfs_check output ***"		>>$seqres.full
-		cat $tmp.fs_check			>>$seqres.full
-		echo "*** end xfs_check output"		>>$seqres.full
-
-		ok=0
-	fi
+	# xfs_check used to run here, but was removed as of July 2024 because
+	# xfs_repair can detect more corruptions than xfs_check ever did.
 
 	$XFS_REPAIR_PROG -n $extra_options $extra_log_options $extra_rt_options $device >$tmp.repair 2>&1
 	if [ $? -ne 0 ]; then
diff --git a/crash/xfscrash b/crash/xfscrash
index 579b724db3..037b3df1e5 100755
--- a/crash/xfscrash
+++ b/crash/xfscrash
@@ -110,24 +110,6 @@ _check()
     fail=0
     
     if [ $expect -eq 0 ]
-    then
-        _echo "   *** Checking FS (expecting clean fs)"
-    else
-        _echo "   *** Checking FS (expecting dirty fs)"
-    fi
-    
-    
-    if [ $expect -eq 0 ]
-    then
-        _echo "      *** xfs_check ($LOG/check_clean.out)"   
-        _xfs_check $TEST_DEV &> $LOG/check_clean.out || fail=1
-        [ -s /tmp/xfs_check_clean.out ] && fail=1
-    else
-        _echo "      *** xfs_check ($LOG/check_dirty.out)"   
-        _xfs_check $TEST_DEV &> $LOG/check_dirty.out || fail=1
-    fi
-    
-    if [ $fail -eq 0 -a $expect -eq 0 ]
     then
         _echo "      *** xfs_repair -n ($LOG/repair_clean.out)"   
         xfs_repair -n $TEST_DEV &> $LOG/repair_clean.out || fail=1
diff --git a/tests/xfs/017 b/tests/xfs/017
index efe0ac119b..f961425409 100755
--- a/tests/xfs/017
+++ b/tests/xfs/017
@@ -55,10 +55,10 @@ do
             | head | grep -q "<CLEAN>" || _fail "DIRTY LOG"
 
         echo ""                             >>$seqres.full
-        echo "*** XFS_CHECK ***"            >>$seqres.full
+        echo "*** XFS_REPAIR ***"           >>$seqres.full
         echo ""                             >>$seqres.full
-        _scratch_xfs_check                  >>$seqres.full 2>&1 \
-            || _fail "xfs_check failed"
+        _scratch_xfs_repair -n              >>$seqres.full 2>&1 \
+            || _fail "xfs_repair -n failed"
         _try_scratch_mount -o remount,rw \
             || _fail "remount rw failed"
 done
diff --git a/tests/xfs/114 b/tests/xfs/114
index 343730051b..510d31a402 100755
--- a/tests/xfs/114
+++ b/tests/xfs/114
@@ -78,7 +78,7 @@ $XFS_IO_PROG -c 'fsmap -v' $SCRATCH_MNT >> $seqres.full
 
 echo "Remount"
 _scratch_unmount
-_scratch_xfs_check
+_check_xfs_scratch_fs
 _scratch_mount
 
 echo "Collapse file"
diff --git a/tests/xfs/291 b/tests/xfs/291
index 831c50d7b5..0141c075be 100755
--- a/tests/xfs/291
+++ b/tests/xfs/291
@@ -94,9 +94,8 @@ for I in `seq 1 2 5000`; do
 done
 
 _scratch_unmount
-# Can xfs_repair and xfs_check cope with this monster?
+# Can xfs_repair cope with this monster?
 _scratch_xfs_repair >> $seqres.full 2>&1 || _fail "xfs_repair failed"
-_scratch_xfs_check >> $seqres.full 2>&1 || _fail "xfs_check failed"
 
 # Yes they can!  Now...
 # Can xfs_metadump cope with this monster?
diff --git a/tests/xfs/307 b/tests/xfs/307
index 25d15a9c0d..7559d90414 100755
--- a/tests/xfs/307
+++ b/tests/xfs/307
@@ -119,9 +119,6 @@ fi
 
 _dump_status "broken fs config" >> $seqres.full
 
-echo "Look for leftover warning in xfs_check"
-_scratch_xfs_check | _filter_leftover
-
 echo "Look for leftover warning in xfs_repair"
 _scratch_xfs_repair -n 2>&1 | _filter_leftover
 
@@ -130,9 +127,6 @@ _scratch_xfs_repair >> $seqres.full 2>&1 || echo "xfs_repair failed?"
 
 _dump_status "supposedly fixed fs config" >> $seqres.full
 
-echo "Look for no more leftover warning in xfs_check"
-_scratch_xfs_check | _filter_leftover
-
 echo "Look for no more leftover warning in xfs_repair"
 _scratch_xfs_repair -n 2>&1 | _filter_leftover
 
diff --git a/tests/xfs/307.out b/tests/xfs/307.out
index b264ed0280..846b2a9813 100644
--- a/tests/xfs/307.out
+++ b/tests/xfs/307.out
@@ -4,10 +4,7 @@ We need AG1 to have a single free extent
 Find our extent and old counter values
 Remove the extent from the freesp btrees
 Add the extent to the refcount btree
-Look for leftover warning in xfs_check
-leftover CoW extent (NR/NR) len NR
 Look for leftover warning in xfs_repair
 leftover CoW extent (NR/NR) len NR
 Fix filesystem
-Look for no more leftover warning in xfs_check
 Look for no more leftover warning in xfs_repair
diff --git a/tests/xfs/308 b/tests/xfs/308
index 813c4d8d4e..3c88869e45 100755
--- a/tests/xfs/308
+++ b/tests/xfs/308
@@ -128,9 +128,6 @@ _scratch_unmount
 
 _dump_status "supposedly fixed fs config" >> $seqres.full
 
-echo "Look for no more leftover warning in xfs_check"
-_scratch_xfs_check | _filter_leftover
-
 echo "Look for no more leftover warning in xfs_repair"
 _scratch_xfs_repair -n 2>&1 | _filter_leftover
 
diff --git a/tests/xfs/308.out b/tests/xfs/308.out
index 383cd07e9d..39a288be68 100644
--- a/tests/xfs/308.out
+++ b/tests/xfs/308.out
@@ -7,5 +7,4 @@ Add the extent to the refcount btree
 Look for leftover warning in xfs_repair
 leftover CoW extent (NR/NR) len NR
 Mount filesystem
-Look for no more leftover warning in xfs_check
 Look for no more leftover warning in xfs_repair
diff --git a/tests/xfs/310 b/tests/xfs/310
index eb310d8ccd..34d17be97f 100755
--- a/tests/xfs/310
+++ b/tests/xfs/310
@@ -65,7 +65,6 @@ nr_rmaps=$(xfs_db -c 'agf 0' -c 'addr rmaproot' -c 'p' $DMHUGEDISK_DEV | grep ",
 test $nr_rmaps -eq 1 || xfs_db -c 'agf 0' -c 'addr rmaproot' -c 'p' $DMHUGEDISK_DEV | grep ",$inum,[0-9]*,1,0,0"
 
 echo "Check and fake-repair huge filesystem" | tee -a $seqres.full
-$XFS_DB_PROG -c 'check' $DMHUGEDISK_DEV
 $XFS_REPAIR_PROG -n $DMHUGEDISK_DEV >> $seqres.full 2>&1
 test $? -eq 0 || echo "xfs_repair -n failed, see $seqres.full"
 
@@ -82,7 +81,6 @@ nr_rmaps=$(xfs_db -c 'agf 0' -c 'addr rmaproot' -c 'p' $DMHUGEDISK_DEV | grep ",
 test $nr_rmaps -eq 1 || xfs_db -c 'agf 0' -c 'addr rmaproot' -c 'p' $DMHUGEDISK_DEV | grep ",$inum,[0-9]*,1,0,0"
 
 echo "Check and fake-repair huge filesystem again" | tee -a $seqres.full
-$XFS_DB_PROG -c 'check' $DMHUGEDISK_DEV
 $XFS_REPAIR_PROG -n $DMHUGEDISK_DEV >> $seqres.full 2>&1
 
 echo "Done"
