On Thu, Feb 06, 2025 at 07:44:29AM +0100, Christoph Hellwig wrote: > Add a helper to find the last offset mapped in the rtrmap. This will be > used by the zoned code to find out where to start writing again on > conventional devices without hardware zone support. > > Signed-off-by: Christoph Hellwig <hch@xxxxxx> Looks ok, Reviewed-by: "Darrick J. Wong" <djwong@xxxxxxxxxx> --D > --- > fs/xfs/libxfs/xfs_rtrmap_btree.c | 19 +++++++++++++++++++ > fs/xfs/libxfs/xfs_rtrmap_btree.h | 2 ++ > 2 files changed, 21 insertions(+) > > diff --git a/fs/xfs/libxfs/xfs_rtrmap_btree.c b/fs/xfs/libxfs/xfs_rtrmap_btree.c > index e4ec36943cb7..9bdc2cbfc113 100644 > --- a/fs/xfs/libxfs/xfs_rtrmap_btree.c > +++ b/fs/xfs/libxfs/xfs_rtrmap_btree.c > @@ -1033,3 +1033,22 @@ xfs_rtrmapbt_init_rtsb( > xfs_btree_del_cursor(cur, error); > return error; > } > + > +/* > + * Return the highest rgbno currently tracked by the rmap for this rtg. > + */ > +xfs_rgblock_t > +xfs_rtrmap_highest_rgbno( > + struct xfs_rtgroup *rtg) > +{ > + struct xfs_btree_block *block = rtg_rmap(rtg)->i_df.if_broot; > + union xfs_btree_key key = {}; > + struct xfs_btree_cur *cur; > + > + if (block->bb_numrecs == 0) > + return NULLRGBLOCK; > + cur = xfs_rtrmapbt_init_cursor(NULL, rtg); > + xfs_btree_get_keys(cur, block, &key); > + xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); > + return be32_to_cpu(key.__rmap_bigkey[1].rm_startblock); > +} > diff --git a/fs/xfs/libxfs/xfs_rtrmap_btree.h b/fs/xfs/libxfs/xfs_rtrmap_btree.h > index 9d0915089891..e328fd62a149 100644 > --- a/fs/xfs/libxfs/xfs_rtrmap_btree.h > +++ b/fs/xfs/libxfs/xfs_rtrmap_btree.h > @@ -207,4 +207,6 @@ struct xfs_btree_cur *xfs_rtrmapbt_mem_cursor(struct xfs_rtgroup *rtg, > int xfs_rtrmapbt_mem_init(struct xfs_mount *mp, struct xfbtree *xfbtree, > struct xfs_buftarg *btp, xfs_rgnumber_t rgno); > > +xfs_rgblock_t xfs_rtrmap_highest_rgbno(struct xfs_rtgroup *rtg); > + > #endif /* __XFS_RTRMAP_BTREE_H__ */ > -- > 2.45.2 > >