diff options
| author | Darrick J. Wong <djwong@kernel.org> | 2023-12-15 10:03:36 -0800 |
|---|---|---|
| committer | Darrick J. Wong <djwong@kernel.org> | 2023-12-15 10:03:36 -0800 |
| commit | 2d295fe65776d15c06d53dbe3064f62e036e7c46 (patch) | |
| tree | 7c7e5817faedd719ee6faebd40b2aa06ff2fd0ff /fs/xfs/scrub/inode.c | |
| parent | d9041681dd2f5334529a68868c9266631c384de4 (diff) | |
xfs: repair inode records
If an inode is so badly damaged that it cannot be loaded into the cache,
fix the ondisk metadata and try again. If there /is/ a cached inode,
fix any problems and apply any optimizations that can be solved incore.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'fs/xfs/scrub/inode.c')
| -rw-r--r-- | fs/xfs/scrub/inode.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/xfs/scrub/inode.c b/fs/xfs/scrub/inode.c index a81f070b0cd2..6e2fe2d6250b 100644 --- a/fs/xfs/scrub/inode.c +++ b/fs/xfs/scrub/inode.c @@ -25,6 +25,7 @@ #include "scrub/common.h" #include "scrub/btree.h" #include "scrub/trace.h" +#include "scrub/repair.h" /* Prepare the attached inode for scrubbing. */ static inline int @@ -185,8 +186,11 @@ xchk_setup_inode( * saying the inode is allocated and the icache being unable to load * the inode until we can flag the corruption in xchk_inode. The * scrub function has to note the corruption, since we're not really - * supposed to do that from the setup function. + * supposed to do that from the setup function. Save the mapping to + * make repairs to the ondisk inode buffer. */ + if (xchk_could_repair(sc)) + xrep_setup_inode(sc, &imap); return 0; out_cancel: |
