diff options
Diffstat (limited to 'fs/xfs/libxfs/xfs_rtbitmap.c')
-rw-r--r-- | fs/xfs/libxfs/xfs_rtbitmap.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/xfs/libxfs/xfs_rtbitmap.c b/fs/xfs/libxfs/xfs_rtbitmap.c index 7712f282d172..1855182c11ec 100644 --- a/fs/xfs/libxfs/xfs_rtbitmap.c +++ b/fs/xfs/libxfs/xfs_rtbitmap.c | |||
@@ -1038,8 +1038,11 @@ xfs_rtalloc_query_range( | |||
1038 | 1038 | ||
1039 | if (low_rec->ar_startblock > high_rec->ar_startblock) | 1039 | if (low_rec->ar_startblock > high_rec->ar_startblock) |
1040 | return -EINVAL; | 1040 | return -EINVAL; |
1041 | else if (low_rec->ar_startblock == high_rec->ar_startblock) | 1041 | if (low_rec->ar_startblock >= mp->m_sb.sb_rextents || |
1042 | low_rec->ar_startblock == high_rec->ar_startblock) | ||
1042 | return 0; | 1043 | return 0; |
1044 | if (high_rec->ar_startblock >= mp->m_sb.sb_rextents) | ||
1045 | high_rec->ar_startblock = mp->m_sb.sb_rextents - 1; | ||
1043 | 1046 | ||
1044 | /* Iterate the bitmap, looking for discrepancies. */ | 1047 | /* Iterate the bitmap, looking for discrepancies. */ |
1045 | rtstart = low_rec->ar_startblock; | 1048 | rtstart = low_rec->ar_startblock; |
@@ -1083,7 +1086,7 @@ xfs_rtalloc_query_all( | |||
1083 | struct xfs_rtalloc_rec keys[2]; | 1086 | struct xfs_rtalloc_rec keys[2]; |
1084 | 1087 | ||
1085 | keys[0].ar_startblock = 0; | 1088 | keys[0].ar_startblock = 0; |
1086 | keys[1].ar_startblock = tp->t_mountp->m_sb.sb_rblocks; | 1089 | keys[1].ar_startblock = tp->t_mountp->m_sb.sb_rextents - 1; |
1087 | keys[0].ar_blockcount = keys[1].ar_blockcount = 0; | 1090 | keys[0].ar_blockcount = keys[1].ar_blockcount = 0; |
1088 | 1091 | ||
1089 | return xfs_rtalloc_query_range(tp, &keys[0], &keys[1], fn, priv); | 1092 | return xfs_rtalloc_query_range(tp, &keys[0], &keys[1], fn, priv); |