diff --git a/fs/xfs/scrub/bmap.c b/fs/xfs/scrub/bmap.c
index 912b67d2321b7b2c9ff2b2343eb425837de961fc..a2edcf8cc779d4523ef4f956f6f5eda96e802878 100644
--- a/fs/xfs/scrub/bmap.c
+++ b/fs/xfs/scrub/bmap.c
@@ -764,6 +764,7 @@ xchk_bmap_iext_iter(
 {
 	struct xfs_bmbt_irec	got;
 	struct xfs_ifork	*ifp;
+	xfs_filblks_t		prev_len;
 
 	ifp = xfs_ifork_ptr(info->sc->ip, info->whichfork);
 
@@ -782,6 +783,7 @@ xchk_bmap_iext_iter(
 	 * Iterate subsequent iextent records and merge them with the one
 	 * that we just read, if possible.
 	 */
+	prev_len = irec->br_blockcount;
 	while (xfs_iext_peek_next_extent(ifp, &info->icur, &got)) {
 		if (!xchk_are_bmaps_contiguous(irec, &got))
 			break;
@@ -792,7 +794,16 @@ xchk_bmap_iext_iter(
 			return false;
 		}
 
+		/*
+		 * Notify the user of mergeable records in the data or attr
+		 * forks.  CoW forks only exist in memory so we ignore them.
+		 */
+		if (info->whichfork != XFS_COW_FORK &&
+		    prev_len + got.br_blockcount > BMBT_BLOCKCOUNT_MASK)
+			xchk_ino_set_preen(info->sc, info->sc->ip->i_ino);
+
 		irec->br_blockcount += got.br_blockcount;
+		prev_len = got.br_blockcount;
 		xfs_iext_next(ifp, &info->icur);
 	}