Re: [PATCH 3/9] xfs: refactor inode verifier error logging

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Mar 14, 2018 at 05:29:48PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
> 
> Refactor some of the inode verifier failure logging call sites to use
> the new xfs_inode_verifier_error method which dumps the offending buffer
> as well as the code location of the failed check.  This trims the
> output, makes it clearer to the admin that repair must be run, and gives
> the developers more details to work from.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
> ---

Reviewed-by: Brian Foster <bfoster@xxxxxxxxxx>

>  fs/xfs/libxfs/xfs_bmap.c       |    5 +++--
>  fs/xfs/libxfs/xfs_inode_fork.c |   15 +++++++++------
>  2 files changed, 12 insertions(+), 8 deletions(-)
> 
> 
> diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
> index 5850e76..fe7534e 100644
> --- a/fs/xfs/libxfs/xfs_bmap.c
> +++ b/fs/xfs/libxfs/xfs_bmap.c
> @@ -1244,8 +1244,9 @@ xfs_iread_extents(
>  			xfs_warn(ip->i_mount,
>  				"corrupt dinode %Lu, (btree extents).",
>  				(unsigned long long) ip->i_ino);
> -			XFS_CORRUPTION_ERROR(__func__,
> -				XFS_ERRLEVEL_LOW, ip->i_mount, block);
> +			xfs_inode_verifier_error(ip, -EFSCORRUPTED,
> +					__func__, block, sizeof(*block),
> +					__this_address);
>  			error = -EFSCORRUPTED;
>  			goto out_brelse;
>  		}
> diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c
> index 613fba2..701c42a 100644
> --- a/fs/xfs/libxfs/xfs_inode_fork.c
> +++ b/fs/xfs/libxfs/xfs_inode_fork.c
> @@ -195,8 +195,9 @@ xfs_iformat_local(
>  	"corrupt inode %Lu (bad size %d for local fork, size = %d).",
>  			(unsigned long long) ip->i_ino, size,
>  			XFS_DFORK_SIZE(dip, ip->i_mount, whichfork));
> -		XFS_CORRUPTION_ERROR("xfs_iformat_local", XFS_ERRLEVEL_LOW,
> -				     ip->i_mount, dip);
> +		xfs_inode_verifier_error(ip, -EFSCORRUPTED,
> +				"xfs_iformat_local", dip, sizeof(*dip),
> +				__this_address);
>  		return -EFSCORRUPTED;
>  	}
>  
> @@ -231,8 +232,9 @@ xfs_iformat_extents(
>  	if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, mp, whichfork))) {
>  		xfs_warn(ip->i_mount, "corrupt inode %Lu ((a)extents = %d).",
>  			(unsigned long long) ip->i_ino, nex);
> -		XFS_CORRUPTION_ERROR("xfs_iformat_extents(1)", XFS_ERRLEVEL_LOW,
> -				     mp, dip);
> +		xfs_inode_verifier_error(ip, -EFSCORRUPTED,
> +				"xfs_iformat_extents(1)", dip, sizeof(*dip),
> +				__this_address);
>  		return -EFSCORRUPTED;
>  	}
>  
> @@ -309,8 +311,9 @@ xfs_iformat_btree(
>  		     level == 0 || level > XFS_BTREE_MAXLEVELS) {
>  		xfs_warn(mp, "corrupt inode %Lu (btree).",
>  					(unsigned long long) ip->i_ino);
> -		XFS_CORRUPTION_ERROR("xfs_iformat_btree", XFS_ERRLEVEL_LOW,
> -					 mp, dip);
> +		xfs_inode_verifier_error(ip, -EFSCORRUPTED,
> +				"xfs_iformat_btree", dfp, size,
> +				__this_address);
>  		return -EFSCORRUPTED;
>  	}
>  
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux