xfs: update incore per-AG inode count
PATCH 1/1 xfs: update incore per-AG inode count
From: Darrick J. Wong <[email protected]>
For whatever reason we never actually update pagi_count (the in-core perag inode count) when we allocate or free inode chunks. Online scrub is going to use it, so we need to fix the accounting.
--- fs/xfs/libxfs/xfs_ialloc.c | 2 ++ 1 file changed, 2 insertions(+)
fs/xfs/libxfs/xfs_ialloc.c +2 -0
@@ -897,6 +897,7 @@ xfs_ialloc_ag_alloc(be32_add_cpu (&agi->agi_freecount, newlen); pag =xfs_perag_get (args.mp, agno); pag->pagi_freecount += newlen; + pag->pagi_count += newlen;xfs_perag_put (pag); agi->agi_newino =cpu_to_be32 (newino);
@@ -1991,6 +1992,7 @@ xfs_difree_inobt(xfs_ialloc_log_agi (tp, agbp,XFS_AGI_COUNT |XFS_AGI_FREECOUNT ); pag =xfs_perag_get (mp, agno); pag->pagi_freecount -= ilen -1 ; + pag->pagi_count -= ilen;xfs_perag_put (pag);xfs_trans_mod_sb (tp,XFS_TRANS_SB_ICOUNT , -ilen);xfs_trans_mod_sb (tp,XFS_TRANS_SB_IFREE , -(ilen -1 ));
Quoted 8 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
For whatever reason we never actually update
pagi_count(the in-core perag inode count) when we allocate or free inode chunks. Online scrub is going to use it, so we need to fix the accounting.Signed-off-by Darrick J. Wong <[email protected]>---
Interesting, I guess it hasn't been a problem because the value is only used in a particular mount scenario right after it is initialized from disk. Anyways:
Quoted 27 lines
fs/xfs/libxfs/xfs_ialloc.c | 2 ++ 1 file changed, 2 insertions(+)fs/xfs/libxfs/xfs_ialloc.c +2
-1@@ -897,6 +897,7 @@ xfs_ialloc_ag_alloc(be32_add_cpu (&agi->agi_freecount, newlen); pag =xfs_perag_get (args.mp, agno); pag->pagi_freecount += newlen; + pag->pagi_count += newlen;xfs_perag_put (pag); agi->agi_newino =cpu_to_be32 (newino);@@ -1991,6 +1992,7 @@ xfs_difree_inobt(xfs_ialloc_log_agi (tp, agbp,XFS_AGI_COUNT |XFS_AGI_FREECOUNT ); pag =xfs_perag_get (mp, agno); pag->pagi_freecount -= ilen -1 ; + pag->pagi_count -= ilen;xfs_perag_put (pag);xfs_trans_mod_sb (tp,XFS_TRANS_SB_ICOUNT , -ilen);xfs_trans_mod_sb (tp,XFS_TRANS_SB_IFREE , -(ilen -1 )); --To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html