Re: [PATCH 3/4] xfs_repair: refactor attr root block pointer check

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

 



On 2/4/20 6:46 PM, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
> 
> In process_longform_attr, replace the agcount check with a call to the
> fsblock verification function in libxfs.  Now we can also catch blocks
> that point to static FS metadata.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx>
> ---
>  repair/attr_repair.c |   10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> 
> diff --git a/repair/attr_repair.c b/repair/attr_repair.c
> index 9a44f610..7b26df33 100644
> --- a/repair/attr_repair.c
> +++ b/repair/attr_repair.c
> @@ -980,21 +980,21 @@ process_longform_attr(
>  	*repair = 0;
>  
>  	bno = blkmap_get(blkmap, 0);
> -
> -	if ( bno == NULLFSBLOCK ) {
> +	if (bno == NULLFSBLOCK) {
>  		if (dip->di_aformat == XFS_DINODE_FMT_EXTENTS &&
>  				be16_to_cpu(dip->di_anextents) == 0)
>  			return(0); /* the kernel can handle this state */
>  		do_warn(
>  	_("block 0 of inode %" PRIu64 " attribute fork is missing\n"),
>  			ino);
> -		return(1);
> +		return 1;
>  	}
> +
>  	/* FIX FOR bug 653709 -- EKN */
> -	if (mp->m_sb.sb_agcount < XFS_FSB_TO_AGNO(mp, bno)) {
> +	if (!xfs_verify_fsbno(mp, bno)) {
>  		do_warn(
>  	_("agno of attribute fork of inode %" PRIu64 " out of regular partition\n"), ino);

I'll change this to

"block in attribute fork of inode %" PRIu64 " is not valid"

ok?

> -		return(1);
> +		return 1;
>  	}
>  
>  	bp = libxfs_readbuf(mp->m_dev, XFS_FSB_TO_DADDR(mp, bno),
> 



[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