xfs: pass the fsbno to xfs_perag_intent_get

All callers of xfs_perag_intent_get have a fsbno and need boilerplate
code to turn that into an agno.  Just pass the fsbno to
xfs_perag_intent_get and look up the agno there.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
Christoph Hellwig 2024-07-02 11:22:51 -07:00 committed by Darrick J. Wong
parent 980faece91
commit 62d597a197
6 changed files with 11 additions and 23 deletions

View File

@ -324,13 +324,9 @@ xfs_bmap_update_get_group(
struct xfs_mount *mp, struct xfs_mount *mp,
struct xfs_bmap_intent *bi) struct xfs_bmap_intent *bi)
{ {
xfs_agnumber_t agno;
if (xfs_ifork_is_realtime(bi->bi_owner, bi->bi_whichfork)) if (xfs_ifork_is_realtime(bi->bi_owner, bi->bi_whichfork))
return; return;
agno = XFS_FSB_TO_AGNO(mp, bi->bi_bmap.br_startblock);
/* /*
* Bump the intent count on behalf of the deferred rmap and refcount * Bump the intent count on behalf of the deferred rmap and refcount
* intent items that that we can queue when we finish this bmap work. * intent items that that we can queue when we finish this bmap work.
@ -338,7 +334,7 @@ xfs_bmap_update_get_group(
* intent drops the intent count, ensuring that the intent count * intent drops the intent count, ensuring that the intent count
* remains nonzero across the transaction roll. * remains nonzero across the transaction roll.
*/ */
bi->bi_pag = xfs_perag_intent_get(mp, agno); bi->bi_pag = xfs_perag_intent_get(mp, bi->bi_bmap.br_startblock);
} }
/* Add this deferred BUI to the transaction. */ /* Add this deferred BUI to the transaction. */

View File

@ -94,17 +94,17 @@ static inline int xfs_defer_drain_wait(struct xfs_defer_drain *dr)
} }
/* /*
* Get a passive reference to an AG and declare an intent to update its * Get a passive reference to the AG that contains a fsbno and declare an intent
* metadata. * to update its metadata.
*/ */
struct xfs_perag * struct xfs_perag *
xfs_perag_intent_get( xfs_perag_intent_get(
struct xfs_mount *mp, struct xfs_mount *mp,
xfs_agnumber_t agno) xfs_fsblock_t fsbno)
{ {
struct xfs_perag *pag; struct xfs_perag *pag;
pag = xfs_perag_get(mp, agno); pag = xfs_perag_get(mp, XFS_FSB_TO_AGNO(mp, fsbno));
if (!pag) if (!pag)
return NULL; return NULL;

View File

@ -62,7 +62,7 @@ void xfs_drain_wait_enable(void);
* until the item is finished or cancelled. * until the item is finished or cancelled.
*/ */
struct xfs_perag *xfs_perag_intent_get(struct xfs_mount *mp, struct xfs_perag *xfs_perag_intent_get(struct xfs_mount *mp,
xfs_agnumber_t agno); xfs_fsblock_t fsbno);
void xfs_perag_intent_put(struct xfs_perag *pag); void xfs_perag_intent_put(struct xfs_perag *pag);
void xfs_perag_intent_hold(struct xfs_perag *pag); void xfs_perag_intent_hold(struct xfs_perag *pag);
@ -76,7 +76,8 @@ struct xfs_defer_drain { /* empty */ };
#define xfs_defer_drain_free(dr) ((void)0) #define xfs_defer_drain_free(dr) ((void)0)
#define xfs_defer_drain_init(dr) ((void)0) #define xfs_defer_drain_init(dr) ((void)0)
#define xfs_perag_intent_get(mp, agno) xfs_perag_get((mp), (agno)) #define xfs_perag_intent_get(mp, fsbno) \
xfs_perag_get((mp), XFS_FSB_TO_AGNO(mp, fsbno))
#define xfs_perag_intent_put(pag) xfs_perag_put(pag) #define xfs_perag_intent_put(pag) xfs_perag_put(pag)
static inline void xfs_perag_intent_hold(struct xfs_perag *pag) { } static inline void xfs_perag_intent_hold(struct xfs_perag *pag) { }

View File

@ -424,10 +424,7 @@ xfs_extent_free_get_group(
struct xfs_mount *mp, struct xfs_mount *mp,
struct xfs_extent_free_item *xefi) struct xfs_extent_free_item *xefi)
{ {
xfs_agnumber_t agno; xefi->xefi_pag = xfs_perag_intent_get(mp, xefi->xefi_startblock);
agno = XFS_FSB_TO_AGNO(mp, xefi->xefi_startblock);
xefi->xefi_pag = xfs_perag_intent_get(mp, agno);
} }
/* Release a passive AG ref after some freeing work. */ /* Release a passive AG ref after some freeing work. */

View File

@ -330,10 +330,7 @@ xfs_refcount_update_get_group(
struct xfs_mount *mp, struct xfs_mount *mp,
struct xfs_refcount_intent *ri) struct xfs_refcount_intent *ri)
{ {
xfs_agnumber_t agno; ri->ri_pag = xfs_perag_intent_get(mp, ri->ri_startblock);
agno = XFS_FSB_TO_AGNO(mp, ri->ri_startblock);
ri->ri_pag = xfs_perag_intent_get(mp, agno);
} }
/* Release a passive AG ref after finishing refcounting work. */ /* Release a passive AG ref after finishing refcounting work. */

View File

@ -356,10 +356,7 @@ xfs_rmap_update_get_group(
struct xfs_mount *mp, struct xfs_mount *mp,
struct xfs_rmap_intent *ri) struct xfs_rmap_intent *ri)
{ {
xfs_agnumber_t agno; ri->ri_pag = xfs_perag_intent_get(mp, ri->ri_bmap.br_startblock);
agno = XFS_FSB_TO_AGNO(mp, ri->ri_bmap.br_startblock);
ri->ri_pag = xfs_perag_intent_get(mp, agno);
} }
/* Release a passive AG ref after finishing rmapping work. */ /* Release a passive AG ref after finishing rmapping work. */