mbox series

[GIT,PULL,10/23] xfs_scrub: improve scheduling of repair items

Message ID 172230458756.1455085.11655778070760827192.stg-ugh@frogsfrogsfrogs (mailing list archive)
State Accepted, archived
Headers show
Series [GIT,PULL,01/23] libxfs: fixes for 6.9 | expand

Pull-request

https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfsprogs-dev.git tags/scrub-repair-scheduling-6.10_2024-07-29

Message

Darrick J. Wong July 30, 2024, 2:42 a.m. UTC
Hi Carlos,

Please pull this branch with changes for xfsprogs for 6.10-rc1.

As usual, I did a test-merge with the main upstream branch as of a few
minutes ago, and didn't see any conflicts.  Please let me know if you
encounter any problems.

The following changes since commit 8dd67c8eccbe0e6b8dd7975ba53f9ccaf532aa9c:

xfs_scrub: hoist scrub retry loop to scrub_item_check_file (2024-07-29 17:01:08 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfsprogs-dev.git tags/scrub-repair-scheduling-6.10_2024-07-29

for you to fetch changes up to 474ff27d466c053f1cd51024e6b0c5a741a2d4bd:

xfs_scrub: try to repair space metadata before file metadata (2024-07-29 17:01:08 -0700)

----------------------------------------------------------------
xfs_scrub: improve scheduling of repair items [v30.9 10/28]

Currently, phase 4 of xfs_scrub uses per-AG repair item lists to
schedule repair work across a thread pool.  This scheme is suboptimal
when most of the repairs involve a single AG because all the work gets
dumped on a single pool thread.

Instead, we should create a thread pool with the same number of workers
as CPUs, and dispatch individual repair tickets as separate work items
to maximize parallelization.

However, we also need to ensure that repairs to space metadata and file
metadata are kept in separate queues because file repairs generally
depend on correctness of space metadata.

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 (4):
libfrog: enhance ptvar to support initializer functions
xfs_scrub: improve thread scheduling repair items during phase 4
xfs_scrub: recheck entire metadata objects after corruption repairs
xfs_scrub: try to repair space metadata before file metadata

libfrog/ptvar.c       |   9 +-
libfrog/ptvar.h       |   4 +-
scrub/counter.c       |   2 +-
scrub/descr.c         |   2 +-
scrub/phase1.c        |  15 +++-
scrub/phase2.c        |  23 ++++-
scrub/phase3.c        | 106 ++++++++++++++--------
scrub/phase4.c        | 244 +++++++++++++++++++++++++++++++++++++-------------
scrub/phase7.c        |   2 +-
scrub/read_verify.c   |   2 +-
scrub/repair.c        | 172 ++++++++++++++++++++++-------------
scrub/repair.h        |  37 ++++++--
scrub/scrub.c         |   5 +-
scrub/scrub.h         |  10 +++
scrub/scrub_private.h |   2 +
scrub/xfs_scrub.h     |   3 +-
16 files changed, 455 insertions(+), 183 deletions(-)