On Wed, Sep 16, 2020 at 08:28:33PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > When callers pass XFS_BMAPI_REMAP into xfs_bunmapi, they want the extent > to be unmapped from the given file fork without the extent being freed. > We do this for non-rt files, but we forgot to do this for realtime > files. So far this isn't a big deal since nobody makes a bunmapi call > to a rt file with the REMAP flag set, but don't leave a logic bomb. > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > --- > fs/xfs/libxfs/xfs_bmap.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > > diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c > index 1b0a01b06a05..e8cd0012a017 100644 > --- a/fs/xfs/libxfs/xfs_bmap.c > +++ b/fs/xfs/libxfs/xfs_bmap.c > @@ -5057,9 +5057,12 @@ xfs_bmap_del_extent_real( > &mod); > ASSERT(mod == 0); > > - error = xfs_rtfree_extent(tp, bno, (xfs_extlen_t)len); > - if (error) > - goto done; > + if (!(bflags & XFS_BMAPI_REMAP)) { > + error = xfs_rtfree_extent(tp, bno, (xfs_extlen_t)len); > + if (error) > + goto done; > + } > + > do_fx = 0; > nblks = len * mp->m_sb.sb_rextsize; > qfield = XFS_TRANS_DQ_RTBCOUNT; We also don't need to calculate bno for this case.