[PATCH 08/19] xfs: verify inode buffers as they are read from disk

Dave Chinner david at fromorbit.com
Thu Oct 11 16:55:48 CDT 2012


On Thu, Oct 11, 2012 at 05:45:56PM -0400, Christoph Hellwig wrote:
> > +		if (unlikely(XFS_TEST_ERROR(!di_ok, mp,
> > +						XFS_ERRTAG_ITOBP_INOTOBP,
> > +						XFS_RANDOM_ITOBP_INOTOBP))) {
> > +			xfs_buf_ioerror(bp, EFSCORRUPTED);
> > +			XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_HIGH,
> > +					     mp, dip);
> > +#ifdef DEBUG
> > +			xfs_emerg(mp,
> > +				"bad inode magic/vsn daddr %lld #%d (magic=%x)",
> > +				(unsigned long long)bp->b_bn, i,
> > +				be16_to_cpu(dip->di_magic));
> > +			ASSERT(0);
> > +#endif
> 
> Is there any point in having this additional output in addition to the
> high error level corruption report above?

IMO, yes. It has the block number in it and it stops the operation
immediately, so you can look at it with xfs_db and see the current
state on disk without it being further modified. Otherwise all we
know is that an inode failed validation without any specific
information as to where it is.

It's quite a way down my list of things to do before I get to the
"put lots more information in failure messages" line item....

Cheers,

Dave.
-- 
Dave Chinner
david at fromorbit.com



More information about the xfs mailing list