[PATCH v2] xfs: re-enable xfsaild idle mode and fix associated races
Brian Foster
bfoster at redhat.com
Wed Jun 20 10:59:58 CDT 2012
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
More information about the xfs
mailing list