Skip to content

Commit

Permalink
xfs: correct calculation for agend and blockcount
Browse files Browse the repository at this point in the history
The agend should be "start + length - 1", then, blockcount should be
"end + 1 - start".  Correct 2 calculation mistakes.

Also, rename "agend" to "range_agend" because it's not the end of the AG
per se; it's the end of the dead region within an AG's agblock space.

Fixes: 5cf32f6 ("xfs: fix the calculation for "end" and "length"")
Signed-off-by: Shiyang Ruan <[email protected]>
Reviewed-by: "Darrick J. Wong" <[email protected]>
Signed-off-by: Chandan Babu R <[email protected]>
  • Loading branch information
irides authored and Chandan Babu R committed Oct 12, 2023
1 parent fa543e6 commit 3c90c01
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions fs/xfs/xfs_notify_failure.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,8 @@ xfs_dax_notify_ddev_failure(
struct xfs_rmap_irec ri_low = { };
struct xfs_rmap_irec ri_high;
struct xfs_agf *agf;
xfs_agblock_t agend;
struct xfs_perag *pag;
xfs_agblock_t range_agend;

pag = xfs_perag_get(mp, agno);
error = xfs_alloc_read_agf(pag, tp, 0, &agf_bp);
Expand All @@ -148,10 +148,10 @@ xfs_dax_notify_ddev_failure(
ri_high.rm_startblock = XFS_FSB_TO_AGBNO(mp, end_fsbno);

agf = agf_bp->b_addr;
agend = min(be32_to_cpu(agf->agf_length),
range_agend = min(be32_to_cpu(agf->agf_length) - 1,
ri_high.rm_startblock);
notify.startblock = ri_low.rm_startblock;
notify.blockcount = agend - ri_low.rm_startblock;
notify.blockcount = range_agend + 1 - ri_low.rm_startblock;

error = xfs_rmap_query_range(cur, &ri_low, &ri_high,
xfs_dax_failure_fn, &notify);
Expand Down

0 comments on commit 3c90c01

Please sign in to comment.