mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-13 05:54:23 +08:00
d9041681dd
In a few patches, we'll add some online repair code that tries to massage the ondisk inode record just enough to get it to pass the inode verifiers so that we can continue with more file repairs. Part of that massaging can include zapping the ondisk forks to clear errors. After that point, the bmap fork repair functions will rebuild the zapped forks. Christoph asked for stronger protections against online repair zapping a fork to get the inode to load vs. other threads trying to access the partially repaired file. Do this by adding a special "[DA]FORK_ZAPPED" inode health flag whenever repair zaps a fork, and sprinkling checks for that flag into the various file operations for things that don't like handling an unexpected zero-extents fork. In practice xfs_scrub will scrub and fix the forks almost immediately after zapping them, so the window is very small. However, if a crash or unmount should occur, we can still detect these zapped inode forks by looking for a zero-extents fork when data was expected. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
17 lines
612 B
C
17 lines
612 B
C
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
/*
|
|
* Copyright (C) 2019-2023 Oracle. All Rights Reserved.
|
|
* Author: Darrick J. Wong <djwong@kernel.org>
|
|
*/
|
|
#ifndef __XFS_SCRUB_HEALTH_H__
|
|
#define __XFS_SCRUB_HEALTH_H__
|
|
|
|
unsigned int xchk_health_mask_for_scrub_type(__u32 scrub_type);
|
|
void xchk_update_health(struct xfs_scrub *sc);
|
|
bool xchk_ag_btree_healthy_enough(struct xfs_scrub *sc, struct xfs_perag *pag,
|
|
xfs_btnum_t btnum);
|
|
void xchk_mark_healthy_if_clean(struct xfs_scrub *sc, unsigned int mask);
|
|
bool xchk_file_looks_zapped(struct xfs_scrub *sc, unsigned int mask);
|
|
|
|
#endif /* __XFS_SCRUB_HEALTH_H__ */
|