mbox series

[GIT,PULL,13/16] xfs: inode-related repair fixes

Message ID 171322718995.141687.5544842750949971895.stg-ugh@frogsfrogsfrogs (mailing list archive)
State Accepted, archived
Headers show
Series [GIT,PULL,01/16] xfs: improve log incompat feature handling | expand

Pull-request

https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git tags/inode-repair-improvements-6.10_2024-04-15

Message

Darrick J. Wong April 16, 2024, 12:30 a.m. UTC
Hi Chandan,

Please pull this branch with changes for xfs 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.

--D

The following changes since commit ab97f4b1c030750f2475bf4da8a9554d02206640:

xfs: repair AGI unlinked inode bucket lists (2024-04-15 14:58:58 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/djwong/xfs-linux.git tags/inode-repair-improvements-6.10_2024-04-15

for you to fetch changes up to 1a5f6e08d4e379a23da5be974aee50b26a20c5b0:

xfs: create subordinate scrub contexts for xchk_metadata_inode_subtype (2024-04-15 14:59:00 -0700)

----------------------------------------------------------------
xfs: inode-related repair fixes [v30.3 13/16]

While doing QA of the online fsck code, I made a few observations:
First, nobody was checking that the di_onlink field is actually zero;
Second, that allocating a temporary file for repairs can fail (and
thus bring down the entire fs) if the inode cluster is corrupt; and
Third, that file link counts do not pin at ~0U to prevent integer
overflows.  Fourth, the x{chk,rep}_metadata_inode_fork functions
should be subclassing the main scrub context, not modifying the
parent's setup willy-nilly.

This scattered patchset fixes those three problems.

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):
xfs: check unused nlink fields in the ondisk inode
xfs: try to avoid allocating from sick inode clusters
xfs: pin inodes that would otherwise overflow link count
xfs: create subordinate scrub contexts for xchk_metadata_inode_subtype

fs/xfs/libxfs/xfs_format.h    |  6 ++++
fs/xfs/libxfs/xfs_ialloc.c    | 40 ++++++++++++++++++++++++++
fs/xfs/libxfs/xfs_inode_buf.c |  8 ++++++
fs/xfs/scrub/common.c         | 23 +++------------
fs/xfs/scrub/dir_repair.c     | 11 ++-----
fs/xfs/scrub/inode_repair.c   | 12 ++++++++
fs/xfs/scrub/nlinks.c         |  4 ++-
fs/xfs/scrub/nlinks_repair.c  |  8 ++----
fs/xfs/scrub/repair.c         | 67 +++++++++----------------------------------
fs/xfs/scrub/scrub.c          | 63 ++++++++++++++++++++++++++++++++++++++++
fs/xfs/scrub/scrub.h          | 11 +++++++
fs/xfs/xfs_inode.c            | 33 ++++++++++++++-------
12 files changed, 187 insertions(+), 99 deletions(-)