Message ID | 20240621100540.2976618-9-john.g.garry@oracle.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | forcealign for xfs | expand |
On Fri, Jun 21, 2024 at 10:05:35AM +0000, John Garry wrote: > For when forcealign is enabled, we want the EOF to be aligned as well, so > do not free EOF blocks. > > Signed-off-by: John Garry <john.g.garry@oracle.com> > --- > fs/xfs/xfs_bmap_util.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c > index e5d893f93522..56b80a7c0992 100644 > --- a/fs/xfs/xfs_bmap_util.c > +++ b/fs/xfs/xfs_bmap_util.c > @@ -539,8 +539,13 @@ xfs_can_free_eofblocks( > * forever. > */ > end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_ISIZE(ip)); > - if (xfs_inode_has_bigrtalloc(ip)) > + > + /* Do not free blocks when forcing extent sizes */ "Only try to free blocks beyond the allocation unit that crosses EOF" ? Otherwise seems fine to me Reviewed-by: Darrick J. Wong <djwong@kernel.org> --D > + if (xfs_inode_has_forcealign(ip)) > + end_fsb = roundup_64(end_fsb, ip->i_extsize); > + else if (xfs_inode_has_bigrtalloc(ip)) > end_fsb = xfs_rtb_roundup_rtx(mp, end_fsb); > + > last_fsb = XFS_B_TO_FSB(mp, mp->m_super->s_maxbytes); > if (last_fsb <= end_fsb) > return false; > -- > 2.31.1 > >
On 21/06/2024 20:08, Darrick J. Wong wrote: >> diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c >> index e5d893f93522..56b80a7c0992 100644 >> --- a/fs/xfs/xfs_bmap_util.c >> +++ b/fs/xfs/xfs_bmap_util.c >> @@ -539,8 +539,13 @@ xfs_can_free_eofblocks( >> * forever. >> */ >> end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_ISIZE(ip)); >> - if (xfs_inode_has_bigrtalloc(ip)) >> + >> + /* Do not free blocks when forcing extent sizes */ > "Only try to free blocks beyond the allocation unit that crosses EOF" ? ok, fine > > Otherwise seems fine to me > Reviewed-by: Darrick J. Wong<djwong@kernel.org> cheers
diff --git a/fs/xfs/xfs_bmap_util.c b/fs/xfs/xfs_bmap_util.c index e5d893f93522..56b80a7c0992 100644 --- a/fs/xfs/xfs_bmap_util.c +++ b/fs/xfs/xfs_bmap_util.c @@ -539,8 +539,13 @@ xfs_can_free_eofblocks( * forever. */ end_fsb = XFS_B_TO_FSB(mp, (xfs_ufsize_t)XFS_ISIZE(ip)); - if (xfs_inode_has_bigrtalloc(ip)) + + /* Do not free blocks when forcing extent sizes */ + if (xfs_inode_has_forcealign(ip)) + end_fsb = roundup_64(end_fsb, ip->i_extsize); + else if (xfs_inode_has_bigrtalloc(ip)) end_fsb = xfs_rtb_roundup_rtx(mp, end_fsb); + last_fsb = XFS_B_TO_FSB(mp, mp->m_super->s_maxbytes); if (last_fsb <= end_fsb) return false;
For when forcealign is enabled, we want the EOF to be aligned as well, so do not free EOF blocks. Signed-off-by: John Garry <john.g.garry@oracle.com> --- fs/xfs/xfs_bmap_util.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)