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

Dave Chinner
2012-10-11T21:54:17Z

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@fromorbit.com