[XFS] Fix rounding bug in xfs_free_file_space found by sparse checking.

SGI-PV: 954580
SGI-Modid: xfs-linux-melb:xfs-kern:26551a

Signed-off-by: Nathan Scott <nathans@sgi.com>
Signed-off-by: Tim Shimmin <tes@sgi.com>
This commit is contained in:
Nathan Scott 2006-09-28 10:56:26 +10:00 committed by Tim Shimmin
parent 87395deb0b
commit 673cdf5c72

View File

@ -4272,7 +4272,7 @@ xfs_free_file_space(
xfs_mount_t *mp; xfs_mount_t *mp;
int nimap; int nimap;
uint resblks; uint resblks;
int rounding; uint rounding;
int rt; int rt;
xfs_fileoff_t startoffset_fsb; xfs_fileoff_t startoffset_fsb;
xfs_trans_t *tp; xfs_trans_t *tp;
@ -4313,8 +4313,7 @@ xfs_free_file_space(
vn_iowait(vp); /* wait for the completion of any pending DIOs */ vn_iowait(vp); /* wait for the completion of any pending DIOs */
} }
rounding = MAX((__uint8_t)(1 << mp->m_sb.sb_blocklog), rounding = max_t(uint, 1 << mp->m_sb.sb_blocklog, NBPP);
(__uint8_t)NBPP);
ilen = len + (offset & (rounding - 1)); ilen = len + (offset & (rounding - 1));
ioffset = offset & ~(rounding - 1); ioffset = offset & ~(rounding - 1);
if (ilen & (rounding - 1)) if (ilen & (rounding - 1))