On Thu, Sep 17, 2020 at 07:38:45PM +0800, xiakaixu1987@xxxxxxxxx wrote: > From: Kaixu Xia <kaixuxia@xxxxxxxxxxx> > > We should do the assert for all the log intent-done items if they appear > here. This patch detect intent-done items by the fact that their item ops > don't have iop_unpin and iop_push methods. > > Signed-off-by: Kaixu Xia <kaixuxia@xxxxxxxxxxx> Seems ok to me, Reviewed-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> --D > --- > fs/xfs/xfs_trans.c | 9 ++++++++- > 1 file changed, 8 insertions(+), 1 deletion(-) > > diff --git a/fs/xfs/xfs_trans.c b/fs/xfs/xfs_trans.c > index ca18a040336a..0d5d5a53fa5a 100644 > --- a/fs/xfs/xfs_trans.c > +++ b/fs/xfs/xfs_trans.c > @@ -925,6 +925,13 @@ xfs_trans_commit( > return __xfs_trans_commit(tp, false); > } > > +/* Is this a log intent-done item? */ > +static inline bool xlog_item_is_intent_done(struct xfs_log_item *lip) > +{ > + return lip->li_ops->iop_unpin == NULL && > + lip->li_ops->iop_push == NULL; > +} > + > /* > * Unlock all of the transaction's items and free the transaction. > * The transaction must not have modified any of its items, because > @@ -959,7 +966,7 @@ xfs_trans_cancel( > struct xfs_log_item *lip; > > list_for_each_entry(lip, &tp->t_items, li_trans) > - ASSERT(!(lip->li_type == XFS_LI_EFD)); > + ASSERT(!xlog_item_is_intent_done(lip)); > } > #endif > xfs_trans_unreserve_and_mod_sb(tp); > -- > 2.20.0 >