aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorChandan Babu R <chandan.babu@oracle.com>2023-08-18 13:36:52 +0530
committerChandan Babu R <chandan.babu@oracle.com>2023-08-18 13:36:52 +0530
commit939c9de87fc3488e49efec8b72dc3ec62ad66ef7 (patch)
tree5bad52d271057eff8f68fca5276056d9aeeff4aa
parentMerge tag 'repair-force-rebuild-6.6_2023-08-10' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.6-mergeA (diff)
parentxfs: fix agf_fllast when repairing an empty AGFL (diff)
downloadwireguard-linux-939c9de87fc3488e49efec8b72dc3ec62ad66ef7.tar.xz
wireguard-linux-939c9de87fc3488e49efec8b72dc3ec62ad66ef7.zip
Merge tag 'repair-agfl-fixes-6.6_2023-08-10' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux into xfs-6.6-mergeA
xfs: fixes to the AGFL repair code This series contains a couple of bug fixes to the AGFL repair code that came up during QA. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Chandan Babu R <chandan.babu@oracle.com> * tag 'repair-agfl-fixes-6.6_2023-08-10' of https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux: xfs: fix agf_fllast when repairing an empty AGFL xfs: clear pagf_agflreset when repairing the AGFL
-rw-r--r--fs/xfs/scrub/agheader_repair.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/xfs/scrub/agheader_repair.c b/fs/xfs/scrub/agheader_repair.c
index 3dda09b5ece5..876a2f41b063 100644
--- a/fs/xfs/scrub/agheader_repair.c
+++ b/fs/xfs/scrub/agheader_repair.c
@@ -620,11 +620,17 @@ xrep_agfl_update_agf(
xfs_force_summary_recalc(sc->mp);
/* Update the AGF counters. */
- if (xfs_perag_initialised_agf(sc->sa.pag))
+ if (xfs_perag_initialised_agf(sc->sa.pag)) {
sc->sa.pag->pagf_flcount = flcount;
+ clear_bit(XFS_AGSTATE_AGFL_NEEDS_RESET,
+ &sc->sa.pag->pag_opstate);
+ }
agf->agf_flfirst = cpu_to_be32(0);
agf->agf_flcount = cpu_to_be32(flcount);
- agf->agf_fllast = cpu_to_be32(flcount - 1);
+ if (flcount)
+ agf->agf_fllast = cpu_to_be32(flcount - 1);
+ else
+ agf->agf_fllast = cpu_to_be32(xfs_agfl_size(sc->mp) - 1);
xfs_alloc_log_agf(sc->tp, agf_bp,
XFS_AGF_FLFIRST | XFS_AGF_FLLAST | XFS_AGF_FLCOUNT);