On Wed, Apr 12, 2023 at 05:18:07AM -0700, Christoph Hellwig wrote: > On Tue, Apr 11, 2023 at 04:31:59PM -0700, Darrick J. Wong wrote: > > Unfortunately, the ondisk buffer is corrupt, but recovery just read the > > buffer with no buffer ops specified: > > > > error = xfs_buf_read(mp->m_ddev_targp, buf_f->blf_blkno, > > buf_f->blf_len, buf_flags, &bp, NULL); > > > + > > + /* > > + * We're skipping replay of this buffer log item due to the log > > + * item LSN being behind the ondisk buffer. Verify the buffer > > + * contents since we aren't going to run the write verifier. > > + */ > > + if (bp->b_ops) { > > + bp->b_ops->verify_read(bp); > > + error = bp->b_error; > > + } > > How do we end up with ops attached here if xfs_buf_read doesn't > attach them? The buf type specific recover routines later attach > ops, but this is called before we reach them. The line of context above this hunk you cut out does exactly that. i.e. this call: xlog_recover_validate_buf_type(mp, bp, buf_f, NULLCOMMITLSN); -Dave. -- Dave Chinner david@xxxxxxxxxxxxx