Re: [PATCH 16/21] xfs: improve detection of lost xfile contents

Darrick J. Wong
2024-01-26T16:50:44Z

On Fri, Jan 26, 2024 at 04:33:40PM +0000, Matthew Wilcox wrote:
> On Fri, Jan 26, 2024 at 02:28:58PM +0100, Christoph Hellwig wrote:
> > +/* Has this file lost any of the data stored in it? */
> > +static inline bool
> > +xfile_has_lost_data(
> > + struct inode *inode,
> > + struct folio *folio)
> > +{
> > + struct address_space *mapping = inode->i_mapping;
> > +
> > + /* This folio itself has been poisoned. */
> > + if (folio_test_hwpoison(folio))
> > + return true;
> > +
> > + /* A base page under this large folio has been poisoned. */
> > + if (folio_test_large(folio) && folio_test_has_hwpoisoned(folio))
> > + return true;
> > +
> > + /* Data loss has occurred anywhere in this shmem file. */
> > + if (test_bit(AS_EIO, &mapping->flags))
> > + return true;
> > + if (filemap_check_wb_err(mapping, 0))
> > + return true;
> > +
> > + return false;
> > +}
>
> This is too much. filemap_check_wb_err() will do just fine for your
> needs unless you really want to get fine-grained and perhaps try to
> reconstruct the contents of the file.

Hah no, we're not going to implement online fsck for xfiles. ;)

Online fsck might be a little special in that any data loss anywhere in
an xfile needs to result in the repair aborting without touching the
ondisk metadata, and the sooner we realise this the better.

--D