aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/xfs/xfs_bmap.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/fs/xfs/xfs_bmap.c b/fs/xfs/xfs_bmap.c
index 85e7e327bcd8..e74cfaf52248 100644
--- a/fs/xfs/xfs_bmap.c
+++ b/fs/xfs/xfs_bmap.c
@@ -5621,8 +5621,20 @@ xfs_getbmap(
5621 XFS_FSB_TO_BB(mp, map[i].br_blockcount); 5621 XFS_FSB_TO_BB(mp, map[i].br_blockcount);
5622 out[cur_ext].bmv_unused1 = 0; 5622 out[cur_ext].bmv_unused1 = 0;
5623 out[cur_ext].bmv_unused2 = 0; 5623 out[cur_ext].bmv_unused2 = 0;
5624 ASSERT(((iflags & BMV_IF_DELALLOC) != 0) || 5624
5625 (map[i].br_startblock != DELAYSTARTBLOCK)); 5625 /*
5626 * delayed allocation extents that start beyond EOF can
5627 * occur due to speculative EOF allocation when the
5628 * delalloc extent is larger than the largest freespace
5629 * extent at conversion time. These extents cannot be
5630 * converted by data writeback, so can exist here even
5631 * if we are not supposed to be finding delalloc
5632 * extents.
5633 */
5634 if (map[i].br_startblock == DELAYSTARTBLOCK &&
5635 map[i].br_startoff <= XFS_B_TO_FSB(mp, XFS_ISIZE(ip)))
5636 ASSERT((iflags & BMV_IF_DELALLOC) != 0);
5637
5626 if (map[i].br_startblock == HOLESTARTBLOCK && 5638 if (map[i].br_startblock == HOLESTARTBLOCK &&
5627 whichfork == XFS_ATTR_FORK) { 5639 whichfork == XFS_ATTR_FORK) {
5628 /* came to the end of attribute fork */ 5640 /* came to the end of attribute fork */