diff options
author | Darrick J. Wong <djwong@kernel.org> | 2023-10-11 12:35:20 -0700 |
---|---|---|
committer | Darrick J. Wong <djwong@kernel.org> | 2023-10-11 12:35:20 -0700 |
commit | 6868b8505c807ad9397d78cc4e07cb1cb3582152 (patch) | |
tree | 3e078a4f6e3a3d88a052bcddb1ce1643b8eb8d40 /fs | |
parent | 94f6f0550c625fab1f373bb86a6669b45e9748b3 (diff) | |
download | linux-stable-6868b8505c807ad9397d78cc4e07cb1cb3582152.tar.gz linux-stable-6868b8505c807ad9397d78cc4e07cb1cb3582152.tar.bz2 linux-stable-6868b8505c807ad9397d78cc4e07cb1cb3582152.zip |
xfs: adjust the incore perag block_count when shrinking
If we reduce the number of blocks in an AG, we must update the incore
geometry values as well.
Fixes: 0800169e3e2c9 ("xfs: Pre-calculate per-AG agbno geometry")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/libxfs/xfs_ag.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/xfs/libxfs/xfs_ag.c b/fs/xfs/libxfs/xfs_ag.c index e9cc481b4ddf..f9f4d694640d 100644 --- a/fs/xfs/libxfs/xfs_ag.c +++ b/fs/xfs/libxfs/xfs_ag.c @@ -1001,6 +1001,12 @@ xfs_ag_shrink_space( error = -ENOSPC; goto resv_init_out; } + + /* Update perag geometry */ + pag->block_count -= delta; + __xfs_agino_range(pag->pag_mount, pag->block_count, &pag->agino_min, + &pag->agino_max); + xfs_ialloc_log_agi(*tpp, agibp, XFS_AGI_LENGTH); xfs_alloc_log_agf(*tpp, agfbp, XFS_AGF_LENGTH); return 0; |