if (isnullstartblock(got->br_startblock) ||
            got->br_startblock == DELAYSTARTBLOCK) {
                /*
-                * Delalloc extents that start beyond EOF can occur due to
-                * speculative EOF allocation when the delalloc extent is larger
-                * than the largest freespace extent at conversion time.  These
-                * extents cannot be converted by data writeback, so can exist
-                * here even if we are not supposed to be finding delalloc
-                * extents.
+                * Take the flush completion as being a point-in-time snapshot
+                * where there are no delalloc extents, and if any new ones
+                * have been created racily, just skip them as being 'after'
+                * the flush and so don't get reported.
                 */
-               if (got->br_startoff < XFS_B_TO_FSB(ip->i_mount, XFS_ISIZE(ip)))
-                       ASSERT((bmv->bmv_iflags & BMV_IF_DELALLOC) != 0);
+               if (!(bmv->bmv_iflags & BMV_IF_DELALLOC))
+                       return 0;
 
                p->bmv_oflags |= BMV_OF_DELALLOC;
                p->bmv_block = -2;