Commit 62d597a1 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
parent 980faece
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -324,13 +324,9 @@ xfs_bmap_update_get_group(
	struct xfs_mount	*mp,
	struct xfs_bmap_intent	*bi)
{
	xfs_agnumber_t		agno;

	if (xfs_ifork_is_realtime(bi->bi_owner, bi->bi_whichfork))
		return;

	agno = XFS_FSB_TO_AGNO(mp, bi->bi_bmap.br_startblock);

	/*
	 * 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.
@@ -338,7 +334,7 @@ xfs_bmap_update_get_group(
	 * intent drops the intent count, ensuring that the intent count
	 * 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. */
+4 −4
Original line number Diff line number Diff line
@@ -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
 * metadata.
 * Get a passive reference to the AG that contains a fsbno and declare an intent
 * to update its metadata.
 */
struct xfs_perag *
xfs_perag_intent_get(
	struct xfs_mount	*mp,
	xfs_agnumber_t		agno)
	xfs_fsblock_t		fsbno)
{
	struct xfs_perag	*pag;

	pag = xfs_perag_get(mp, agno);
	pag = xfs_perag_get(mp, XFS_FSB_TO_AGNO(mp, fsbno));
	if (!pag)
		return NULL;

+3 −2
Original line number Diff line number Diff line
@@ -62,7 +62,7 @@ void xfs_drain_wait_enable(void);
 * until the item is finished or cancelled.
 */
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_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_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)

static inline void xfs_perag_intent_hold(struct xfs_perag *pag) { }
+1 −4
Original line number Diff line number Diff line
@@ -424,10 +424,7 @@ xfs_extent_free_get_group(
	struct xfs_mount		*mp,
	struct xfs_extent_free_item	*xefi)
{
	xfs_agnumber_t			agno;

	agno = XFS_FSB_TO_AGNO(mp, xefi->xefi_startblock);
	xefi->xefi_pag = xfs_perag_intent_get(mp, agno);
	xefi->xefi_pag = xfs_perag_intent_get(mp, xefi->xefi_startblock);
}

/* Release a passive AG ref after some freeing work. */
+1 −4
Original line number Diff line number Diff line
@@ -330,10 +330,7 @@ xfs_refcount_update_get_group(
	struct xfs_mount		*mp,
	struct xfs_refcount_intent	*ri)
{
	xfs_agnumber_t			agno;

	agno = XFS_FSB_TO_AGNO(mp, ri->ri_startblock);
	ri->ri_pag = xfs_perag_intent_get(mp, agno);
	ri->ri_pag = xfs_perag_intent_get(mp, ri->ri_startblock);
}

/* Release a passive AG ref after finishing refcounting work. */
Loading