On Tue, May 08, 2018 at 01:41:58PM +1000, Dave Chinner wrote: > From: Dave Chinner <dchinner@xxxxxxxxxx> > > xfs_inactive_symlink_rmt() does something nasty - it joins an inode > into a transaction it is already joined to. This means the inode can > have multiple log item descriptors attached to the transaction for > it. This breaks teh 1:1 mapping that is supposed to exist > between the log item and log item descriptor. > > This results in the log item being processed twice during > transaction commit and CIL formatting, and there are lots of other > potential issues tha arise from double processing of log items in > the transaction commit state machine. > > In this case, the inode is already held by the rolling transaction > returned from xfs_defer_finish(), so there's no need to join it > again. > > Signed-Off-By: Dave Chinner <dchinner@xxxxxxxxxx> > Reviewed-by: Christoph Hellwig <hch@xxxxxx> > --- > fs/xfs/xfs_symlink.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > diff --git a/fs/xfs/xfs_symlink.c b/fs/xfs/xfs_symlink.c > index 5b66ac12913c..27870e5cd259 100644 > --- a/fs/xfs/xfs_symlink.c > +++ b/fs/xfs/xfs_symlink.c > @@ -488,16 +488,11 @@ xfs_inactive_symlink_rmt( > error = xfs_defer_finish(&tp, &dfops); > if (error) > goto error_bmap_cancel; > - /* > - * The first xact was committed, so add the inode to the new one. > - * Mark it dirty so it will be logged and moved forward in the log as > - * part of every commit. > - */ > - xfs_trans_ijoin(tp, ip, 0); > - xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); > + > /* > * Commit the transaction containing extent freeing and EFDs. > */ > + xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE); Seems fine.. but do we even need this call? We're about to commit the transaction and unlock the inode... Brian > error = xfs_trans_commit(tp); > if (error) { > ASSERT(XFS_FORCED_SHUTDOWN(mp)); > -- > 2.17.0 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-xfs" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html