diff options
| author | Ingo Molnar <mingo@kernel.org> | 2024-03-25 13:32:29 +0300 | 
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2024-03-25 13:32:29 +0300 | 
| commit | f4566a1e73957800df75a3dd2dccee8a4697f327 (patch) | |
| tree | b043b875228c0b25988af66c680d60cae69d761d /fs/xfs/xfs_icache.c | |
| parent | b9e6e28663928cab836a19abbdec3d036a07db3b (diff) | |
| parent | 4cece764965020c22cff7665b18a012006359095 (diff) | |
| download | linux-f4566a1e73957800df75a3dd2dccee8a4697f327.tar.xz | |
Merge tag 'v6.9-rc1' into sched/core, to pick up fixes and to refresh the branch
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/xfs/xfs_icache.c')
| -rw-r--r-- | fs/xfs/xfs_icache.c | 14 | 
1 files changed, 11 insertions, 3 deletions
diff --git a/fs/xfs/xfs_icache.c b/fs/xfs/xfs_icache.c index dba514a2c84d..e64265bc0b33 100644 --- a/fs/xfs/xfs_icache.c +++ b/fs/xfs/xfs_icache.c @@ -24,6 +24,7 @@  #include "xfs_ialloc.h"  #include "xfs_ag.h"  #include "xfs_log_priv.h" +#include "xfs_health.h"  #include <linux/iversion.h> @@ -415,6 +416,9 @@ xfs_iget_check_free_state(  			xfs_warn(ip->i_mount,  "Corruption detected! Free inode 0x%llx not marked free! (mode 0x%x)",  				ip->i_ino, VFS_I(ip)->i_mode); +			xfs_agno_mark_sick(ip->i_mount, +					XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino), +					XFS_SICK_AG_INOBT);  			return -EFSCORRUPTED;  		} @@ -422,6 +426,9 @@ xfs_iget_check_free_state(  			xfs_warn(ip->i_mount,  "Corruption detected! Free inode 0x%llx has blocks allocated!",  				ip->i_ino); +			xfs_agno_mark_sick(ip->i_mount, +					XFS_INO_TO_AGNO(ip->i_mount, ip->i_ino), +					XFS_SICK_AG_INOBT);  			return -EFSCORRUPTED;  		}  		return 0; @@ -640,6 +647,8 @@ xfs_iget_cache_miss(  				xfs_buf_offset(bp, ip->i_imap.im_boffset));  		if (!error)  			xfs_buf_set_ref(bp, XFS_INO_REF); +		else +			xfs_inode_mark_sick(ip, XFS_SICK_INO_CORE);  		xfs_trans_brelse(tp, bp);  		if (error) @@ -659,10 +668,9 @@ xfs_iget_cache_miss(  	/*  	 * Preload the radix tree so we can insert safely under the  	 * write spinlock. Note that we cannot sleep inside the preload -	 * region. Since we can be called from transaction context, don't -	 * recurse into the file system. +	 * region.  	 */ -	if (radix_tree_preload(GFP_NOFS)) { +	if (radix_tree_preload(GFP_KERNEL | __GFP_NOLOCKDEP)) {  		error = -EAGAIN;  		goto out_destroy;  	}  | 
