On 05 Aug 2021 at 00:01, "Darrick J. Wong" <djwong@xxxxxxxxxx> wrote: > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > If we try to recover a log intent item and the operation fails due to > filesystem corruption, dump the contents of the item to the log for > further analysis. > Looks good to me. Reviewed-by: Chandan Babu R <chandanrlinux@xxxxxxxxx> > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> > --- > fs/xfs/xfs_bmap_item.c | 3 +++ > fs/xfs/xfs_extfree_item.c | 3 +++ > fs/xfs/xfs_refcount_item.c | 3 +++ > fs/xfs/xfs_rmap_item.c | 3 +++ > 4 files changed, 12 insertions(+) > > > diff --git a/fs/xfs/xfs_bmap_item.c b/fs/xfs/xfs_bmap_item.c > index e3a691937e92..3d6f70da8820 100644 > --- a/fs/xfs/xfs_bmap_item.c > +++ b/fs/xfs/xfs_bmap_item.c > @@ -522,6 +522,9 @@ xfs_bui_item_recover( > error = xfs_trans_log_finish_bmap_update(tp, budp, bui_type, ip, > whichfork, bmap->me_startoff, bmap->me_startblock, > &count, state); > + if (error == -EFSCORRUPTED) > + XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, bmap, > + sizeof(*bmap)); > if (error) > goto err_cancel; > > diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c > index 2424230ca2c3..3f8a0713573a 100644 > --- a/fs/xfs/xfs_extfree_item.c > +++ b/fs/xfs/xfs_extfree_item.c > @@ -629,6 +629,9 @@ xfs_efi_item_recover( > error = xfs_trans_free_extent(tp, efdp, extp->ext_start, > extp->ext_len, > &XFS_RMAP_OINFO_ANY_OWNER, false); > + if (error == -EFSCORRUPTED) > + XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, > + extp, sizeof(*extp)); > if (error) > goto abort_error; > > diff --git a/fs/xfs/xfs_refcount_item.c b/fs/xfs/xfs_refcount_item.c > index 746f4eda724c..163615285b18 100644 > --- a/fs/xfs/xfs_refcount_item.c > +++ b/fs/xfs/xfs_refcount_item.c > @@ -522,6 +522,9 @@ xfs_cui_item_recover( > error = xfs_trans_log_finish_refcount_update(tp, cudp, > type, refc->pe_startblock, refc->pe_len, > &new_fsb, &new_len, &rcur); > + if (error == -EFSCORRUPTED) > + XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, > + refc, sizeof(*refc)); > if (error) > goto abort_error; > > diff --git a/fs/xfs/xfs_rmap_item.c b/fs/xfs/xfs_rmap_item.c > index dc4f0c9f0897..9b91a788722a 100644 > --- a/fs/xfs/xfs_rmap_item.c > +++ b/fs/xfs/xfs_rmap_item.c > @@ -578,6 +578,9 @@ xfs_rui_item_recover( > rmap->me_owner, whichfork, > rmap->me_startoff, rmap->me_startblock, > rmap->me_len, state, &rcur); > + if (error == -EFSCORRUPTED) > + XFS_CORRUPTION_ERROR(__func__, XFS_ERRLEVEL_LOW, mp, > + rmap, sizeof(*rmap)); > if (error) > goto abort_error; > -- chandan