Re: [PATCH 04/13] xfs: refactor verifier callers to print address of failing check

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

 



On Fri, Dec 15, 2017 at 02:09:10PM +1100, Dave Chinner wrote:
> On Thu, Dec 14, 2017 at 04:04:09PM -0800, Darrick J. Wong wrote:
> > On Fri, Dec 15, 2017 at 09:03:26AM +1100, Dave Chinner wrote:
> > > On Wed, Dec 13, 2017 at 03:58:37PM -0800, Darrick J. Wong wrote:
> > > >   */
> > > >  void
> > > >  xfs_verifier_error(
> > > > -	struct xfs_buf		*bp)
> > > > +	struct xfs_buf		*bp,
> > > > +	xfs_failaddr_t		fa)
> > > >  {
> > > >  	struct xfs_mount *mp = bp->b_target->bt_mount;
> > > >  
> > > >  	xfs_alert(mp, "Metadata %s detected at %pS, %s block 0x%llx",
> > > >  		  bp->b_error == -EFSBADCRC ? "CRC error" : "corruption",
> > > > -		  __return_address, bp->b_ops->name, bp->b_bn);
> > > > +		  fa ? fa : __return_address, bp->b_ops->name,
> > > > +		  bp->b_bn);
> > > >  
> > > >  	xfs_alert(mp, "Unmount and run xfs_repair");
> > > 
> > > I'm also wondering if we should move the xfs_buf_ioerror() call
> > > inside this function, too, rather than coding multiple calls in the
> > > verifiers to set bp->b_error in each branch of the verifier that
> > > has an error...
> > 
> > What, something like:
> > 
> > 	if (!xfs_buf_verify_cksum(bp, XFS_AGFL_CRC_OFF)) {
> > 		fa = __this_address;
> > 		error = -EFSBADCRC;
> > 	} else {
> > 		fa = xfs_agfl_verify(bp);
> > 		if (fa)
> > 			error = -EFSCORRUPTED;
> > 	}
> > 
> > 	if (error)
> > 		xfs_verifier_error(bp, fa, error);
> > 
> 
> Yeah, seems like a better approach because we don't have to
> put the error on the buffer before calling xfs_verifier_error(). fa
> tells us exactly where the error wasdetected, so we don't need
> xfs_buf_ioerror() to tell us that...

Ok, but I'll do this as a separate patch.

--D

> Cheers,
> 
> Dave.
> -- 
> Dave Chinner
> david@xxxxxxxxxxxxx
> --
> 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