On 06/20/2012 04:05 AM, Christoph Hellwig wrote: > On Thu, Jun 07, 2012 at 12:49:53PM -0400, Brian Foster wrote: [snip] >> spin_lock(&ailp->xa_lock); >> + >> + /* barrier matches the xa_target update in xfs_ail_push() */ >> + smp_rmb(); >> + target = ailp->xa_target; >> + ailp->xa_target_prev = target; >> + >> lip = xfs_trans_ail_cursor_first(ailp, &cur, ailp->xa_last_pushed_lsn); >> if (!lip) { >> /* >> + >> + spin_lock(&ailp->xa_lock); >> + >> + /* >> + * Idle if the AIL is empty and we are not racing with a target >> + * update. The barrier matches the xa_target update in >> + * xfs_ail_push(). >> + */ >> + smp_rmb(); > > Given that both sides are under xa_lock I can't see any need for > barriers here. > Actually now that I look at it, it appears xfs_trans_ail_copy_lsn() does not necessarily acquire the xa_lock... Brian _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs