On Fri, Sep 02, 2022 at 10:35:59AM +0000, Shiyang Ruan wrote: > The end should be start + length - 1. Also fix the calculation of the > length when seeking for intersection of notify range and device. > > Signed-off-by: Shiyang Ruan <ruansy.fnst@xxxxxxxxxxx> Looks correct to me, Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> --D > --- > fs/xfs/xfs_notify_failure.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/fs/xfs/xfs_notify_failure.c b/fs/xfs/xfs_notify_failure.c > index c4078d0ec108..3830f908e215 100644 > --- a/fs/xfs/xfs_notify_failure.c > +++ b/fs/xfs/xfs_notify_failure.c > @@ -114,7 +114,7 @@ xfs_dax_notify_ddev_failure( > int error = 0; > xfs_fsblock_t fsbno = XFS_DADDR_TO_FSB(mp, daddr); > xfs_agnumber_t agno = XFS_FSB_TO_AGNO(mp, fsbno); > - xfs_fsblock_t end_fsbno = XFS_DADDR_TO_FSB(mp, daddr + bblen); > + xfs_fsblock_t end_fsbno = XFS_DADDR_TO_FSB(mp, daddr + bblen - 1); > xfs_agnumber_t end_agno = XFS_FSB_TO_AGNO(mp, end_fsbno); > > error = xfs_trans_alloc_empty(mp, &tp); > @@ -210,7 +210,7 @@ xfs_dax_notify_failure( > ddev_end = ddev_start + bdev_nr_bytes(mp->m_ddev_targp->bt_bdev) - 1; > > /* Ignore the range out of filesystem area */ > - if (offset + len < ddev_start) > + if (offset + len - 1 < ddev_start) > return -ENXIO; > if (offset > ddev_end) > return -ENXIO; > @@ -222,8 +222,8 @@ xfs_dax_notify_failure( > len -= ddev_start - offset; > offset = 0; > } > - if (offset + len > ddev_end) > - len -= ddev_end - offset; > + if (offset + len - 1 > ddev_end) > + len -= offset + len - 1 - ddev_end; > > return xfs_dax_notify_ddev_failure(mp, BTOBB(offset), BTOBB(len), > mf_flags); > -- > 2.37.2 >