Commit 36029dee authored by Dave Chinner's avatar Dave Chinner Committed by Dave Chinner

xfs: make is_log_ag() a first class helper

We check if an ag contains the log in many places, so make this
a first class XFS helper by lifting it to fs/xfs/libxfs/xfs_ag.h and
renaming it xfs_ag_contains_log(). The convert all the places that
check if the AG contains the log to use this helper.
Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
parent 3829c9a1
...@@ -390,12 +390,6 @@ xfs_get_aghdr_buf( ...@@ -390,12 +390,6 @@ xfs_get_aghdr_buf(
return 0; return 0;
} }
static inline bool is_log_ag(struct xfs_mount *mp, struct aghdr_init_data *id)
{
return mp->m_sb.sb_logstart > 0 &&
id->agno == XFS_FSB_TO_AGNO(mp, mp->m_sb.sb_logstart);
}
/* /*
* Generic btree root block init function * Generic btree root block init function
*/ */
...@@ -421,7 +415,7 @@ xfs_freesp_init_recs( ...@@ -421,7 +415,7 @@ xfs_freesp_init_recs(
arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1); arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1);
arec->ar_startblock = cpu_to_be32(mp->m_ag_prealloc_blocks); arec->ar_startblock = cpu_to_be32(mp->m_ag_prealloc_blocks);
if (is_log_ag(mp, id)) { if (xfs_ag_contains_log(mp, id->agno)) {
struct xfs_alloc_rec *nrec; struct xfs_alloc_rec *nrec;
xfs_agblock_t start = XFS_FSB_TO_AGBNO(mp, xfs_agblock_t start = XFS_FSB_TO_AGBNO(mp,
mp->m_sb.sb_logstart); mp->m_sb.sb_logstart);
...@@ -548,7 +542,7 @@ xfs_rmaproot_init( ...@@ -548,7 +542,7 @@ xfs_rmaproot_init(
} }
/* account for the log space */ /* account for the log space */
if (is_log_ag(mp, id)) { if (xfs_ag_contains_log(mp, id->agno)) {
rrec = XFS_RMAP_REC_ADDR(block, rrec = XFS_RMAP_REC_ADDR(block,
be16_to_cpu(block->bb_numrecs) + 1); be16_to_cpu(block->bb_numrecs) + 1);
rrec->rm_startblock = cpu_to_be32( rrec->rm_startblock = cpu_to_be32(
...@@ -619,7 +613,7 @@ xfs_agfblock_init( ...@@ -619,7 +613,7 @@ xfs_agfblock_init(
agf->agf_refcount_blocks = cpu_to_be32(1); agf->agf_refcount_blocks = cpu_to_be32(1);
} }
if (is_log_ag(mp, id)) { if (xfs_ag_contains_log(mp, id->agno)) {
int64_t logblocks = mp->m_sb.sb_logblocks; int64_t logblocks = mp->m_sb.sb_logblocks;
be32_add_cpu(&agf->agf_freeblks, -logblocks); be32_add_cpu(&agf->agf_freeblks, -logblocks);
......
...@@ -165,6 +165,13 @@ xfs_verify_agino_or_null(struct xfs_perag *pag, xfs_agino_t agino) ...@@ -165,6 +165,13 @@ xfs_verify_agino_or_null(struct xfs_perag *pag, xfs_agino_t agino)
return xfs_verify_agino(pag, agino); return xfs_verify_agino(pag, agino);
} }
static inline bool
xfs_ag_contains_log(struct xfs_mount *mp, xfs_agnumber_t agno)
{
return mp->m_sb.sb_logstart > 0 &&
agno == XFS_FSB_TO_AGNO(mp, mp->m_sb.sb_logstart);
}
/* /*
* Perag iteration APIs * Perag iteration APIs
*/ */
......
...@@ -2897,8 +2897,7 @@ xfs_ialloc_calc_rootino( ...@@ -2897,8 +2897,7 @@ xfs_ialloc_calc_rootino(
* allocation group, or very odd geometries created by old mkfs * allocation group, or very odd geometries created by old mkfs
* versions on very small filesystems. * versions on very small filesystems.
*/ */
if (mp->m_sb.sb_logstart && if (xfs_ag_contains_log(mp, 0))
XFS_FSB_TO_AGNO(mp, mp->m_sb.sb_logstart) == 0)
first_bno += mp->m_sb.sb_logblocks; first_bno += mp->m_sb.sb_logblocks;
/* /*
......
...@@ -697,8 +697,7 @@ xfs_inobt_max_size( ...@@ -697,8 +697,7 @@ xfs_inobt_max_size(
* never be available for the kinds of things that would require btree * never be available for the kinds of things that would require btree
* expansion. We therefore can pretend the space isn't there. * expansion. We therefore can pretend the space isn't there.
*/ */
if (mp->m_sb.sb_logstart && if (xfs_ag_contains_log(mp, pag->pag_agno))
XFS_FSB_TO_AGNO(mp, mp->m_sb.sb_logstart) == pag->pag_agno)
agblocks -= mp->m_sb.sb_logblocks; agblocks -= mp->m_sb.sb_logblocks;
return xfs_btree_calc_size(M_IGEO(mp)->inobt_mnr, return xfs_btree_calc_size(M_IGEO(mp)->inobt_mnr,
......
...@@ -507,8 +507,7 @@ xfs_refcountbt_calc_reserves( ...@@ -507,8 +507,7 @@ xfs_refcountbt_calc_reserves(
* never be available for the kinds of things that would require btree * never be available for the kinds of things that would require btree
* expansion. We therefore can pretend the space isn't there. * expansion. We therefore can pretend the space isn't there.
*/ */
if (mp->m_sb.sb_logstart && if (xfs_ag_contains_log(mp, pag->pag_agno))
XFS_FSB_TO_AGNO(mp, mp->m_sb.sb_logstart) == pag->pag_agno)
agblocks -= mp->m_sb.sb_logblocks; agblocks -= mp->m_sb.sb_logblocks;
*ask += xfs_refcountbt_max_size(mp, agblocks); *ask += xfs_refcountbt_max_size(mp, agblocks);
......
...@@ -666,8 +666,7 @@ xfs_rmapbt_calc_reserves( ...@@ -666,8 +666,7 @@ xfs_rmapbt_calc_reserves(
* never be available for the kinds of things that would require btree * never be available for the kinds of things that would require btree
* expansion. We therefore can pretend the space isn't there. * expansion. We therefore can pretend the space isn't there.
*/ */
if (mp->m_sb.sb_logstart && if (xfs_ag_contains_log(mp, pag->pag_agno))
XFS_FSB_TO_AGNO(mp, mp->m_sb.sb_logstart) == pag->pag_agno)
agblocks -= mp->m_sb.sb_logblocks; agblocks -= mp->m_sb.sb_logblocks;
/* Reserve 1% of the AG or enough for 1 block per record. */ /* Reserve 1% of the AG or enough for 1 block per record. */
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
#include "xfs_shared.h" #include "xfs_shared.h"
#include "xfs_format.h" #include "xfs_format.h"
#include "xfs_btree.h" #include "xfs_btree.h"
#include "xfs_trans_resv.h"
#include "xfs_mount.h"
#include "xfs_ag.h" #include "xfs_ag.h"
#include "xfs_health.h" #include "xfs_health.h"
#include "scrub/scrub.h" #include "scrub/scrub.h"
......
...@@ -13,6 +13,8 @@ ...@@ -13,6 +13,8 @@
#include "scrub/scrub.h" #include "scrub/scrub.h"
#include "scrub/common.h" #include "scrub/common.h"
#include "scrub/btree.h" #include "scrub/btree.h"
#include "xfs_trans_resv.h"
#include "xfs_mount.h"
#include "xfs_ag.h" #include "xfs_ag.h"
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment