On Mon, Feb 24, 2020 at 04:14:40PM -0800, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > Make libxfs_buf_read_map() and libxfs_readbuf() return an error code > instead of making callers guess what happened based on whether or not > they got a buffer back. > > Add a new SALVAGE flag so that certain utilities (xfs_db and xfs_repair) > can attempt salvage operations even if the verifiers failed, which was > the behavior before this change. > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > --- > db/io.c | 4 +-- > libxfs/libxfs_io.h | 25 ++++++++++++------ > libxfs/rdwr.c | 71 +++++++++++++++++++++++++++++++++++++++++----------- > libxfs/trans.c | 24 ++++-------------- > repair/da_util.c | 3 +- > 5 files changed, 82 insertions(+), 45 deletions(-) > > > diff --git a/db/io.c b/db/io.c > index b81e9969..5c9d72bb 100644 > --- a/db/io.c > +++ b/db/io.c > @@ -542,8 +542,8 @@ set_cur( > if (!iocur_top->bbmap) > return; > memcpy(iocur_top->bbmap, bbmap, sizeof(struct bbmap)); > - bp = libxfs_buf_read_map(mp->m_ddev_targp, bbmap->b, > - bbmap->nmaps, 0, ops); > + libxfs_buf_read_map(mp->m_ddev_targp, bbmap->b, bbmap->nmaps, > + LIBXFS_READBUF_SALVAGE, &bp, ops); > } else { > bp = libxfs_buf_read(mp->m_ddev_targp, blknum, len, 0, ops); > iocur_top->bbmap = NULL; I think instead of ignorining the error and checkig b_error further down that should be moved to work based on the return value. Otherwise looks good: Reviewed-by: Christoph Hellwig <hch@xxxxxx>