[GIT PULL 2/18] xfs: online repair of quota counters

Darrick J. Wong
2024-02-24T01:29:29Z

The following changes since commit 5385f1a60d4e5b73e8ecd2757865352b68f54fb9:

xfs: repair file modes by scanning for a dirent pointing to us (2024-02-22 12:30:51 -0800)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git tags/repair-quotacheck-6.9_2024-02-23

for you to fetch changes up to 96ed2ae4a9b06b417e1c20c086c77755a43284bf:

xfs: repair dquots based on live quotacheck results (2024-02-22 12:30:57 -0800)

----------------------------------------------------------------
xfs: online repair of quota counters [v29.3 02/18]

This series uses the inode scanner and live update hook functionality
introduced in the last patchset to implement quotacheck on a live
filesystem. The quotacheck scrubber builds an incore copy of the
dquot resource usage counters and compares it to the live dquots to
report discrepancies.

If the user chooses to repair the quota counters, the repair function
visits each incore dquot to update the counts from the live information.
The live update hooks are key to keeping the incore copy up to date.

This has been running on the djcloud for months with no problems. Enjoy!

Signed-off-by: Darrick J. Wong <djwong@kernel.org>

----------------------------------------------------------------
Darrick J. Wong (8):
xfs: report the health of quota counts
xfs: create a xchk_trans_alloc_empty helper for scrub
xfs: create a helper to count per-device inode block usage
xfs: create a sparse load xfarray function
xfs: implement live quotacheck inode scan
xfs: track quota updates during live quotacheck
xfs: repair cannot update the summary counters when logging quota flags
xfs: repair dquots based on live quotacheck results

fs/xfs/Makefile | 2 +
fs/xfs/libxfs/xfs_fs.h | 4 +-
fs/xfs/libxfs/xfs_health.h | 4 +-
fs/xfs/scrub/common.c | 49 ++-
fs/xfs/scrub/common.h | 11 +
fs/xfs/scrub/fscounters.c | 2 +-
fs/xfs/scrub/health.c | 1 +
fs/xfs/scrub/quotacheck.c | 867 +++++++++++++++++++++++++++++++++++++++
fs/xfs/scrub/quotacheck.h | 76 ++++
fs/xfs/scrub/quotacheck_repair.c | 261 ++++++++++++
fs/xfs/scrub/repair.c | 46 ++-
fs/xfs/scrub/repair.h | 5 +
fs/xfs/scrub/scrub.c | 9 +
fs/xfs/scrub/scrub.h | 10 +-
fs/xfs/scrub/stats.c | 1 +
fs/xfs/scrub/trace.h | 30 +-
fs/xfs/scrub/xfarray.h | 19 +
fs/xfs/xfs_health.c | 1 +
fs/xfs/xfs_inode.c | 16 +
fs/xfs/xfs_inode.h | 2 +
fs/xfs/xfs_qm.c | 23 +-
fs/xfs/xfs_qm.h | 16 +
fs/xfs/xfs_qm_bhv.c | 1 +
fs/xfs/xfs_quota.h | 46 +++
fs/xfs/xfs_trans_dquot.c | 169 +++++++-
25 files changed, 1645 insertions(+), 26 deletions(-)
create mode 100644 fs/xfs/scrub/quotacheck.c
create mode 100644 fs/xfs/scrub/quotacheck.h
create mode 100644 fs/xfs/scrub/quotacheck_repair.c