Message ID | 20191217184203.56997-1-bfoster@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | xfs: use bitops interface for buf log item AIL flag check | expand |
On 12/17/19 12:42 PM, Brian Foster wrote: > The xfs_log_item flags were converted to atomic bitops as of commit > 22525c17ed ("xfs: log item flags are racy"). The assert check for > AIL presence in xfs_buf_item_relse() still uses the old value based > check. This likely went unnoticed as XFS_LI_IN_AIL evaluates to 0 > and causes the assert to unconditionally pass. Fix up the check. > > Signed-off-by: Brian Foster <bfoster@redhat.com> Whoops. Fixes: 22525c17ed ("xfs: log item flags are racy") Reviewed-by: Eric Sandeen <sandeen@redhat.com> > --- > fs/xfs/xfs_buf_item.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c > index 3458a1264a3f..3984779e5911 100644 > --- a/fs/xfs/xfs_buf_item.c > +++ b/fs/xfs/xfs_buf_item.c > @@ -956,7 +956,7 @@ xfs_buf_item_relse( > struct xfs_buf_log_item *bip = bp->b_log_item; > > trace_xfs_buf_item_relse(bp, _RET_IP_); > - ASSERT(!(bip->bli_item.li_flags & XFS_LI_IN_AIL)); > + ASSERT(!test_bit(XFS_LI_IN_AIL, &bip->bli_item.li_flags)); > > bp->b_log_item = NULL; > if (list_empty(&bp->b_li_list)) >
On Tue, Dec 17, 2019 at 02:01:26PM -0600, Eric Sandeen wrote: > On 12/17/19 12:42 PM, Brian Foster wrote: > > The xfs_log_item flags were converted to atomic bitops as of commit > > 22525c17ed ("xfs: log item flags are racy"). The assert check for > > AIL presence in xfs_buf_item_relse() still uses the old value based > > check. This likely went unnoticed as XFS_LI_IN_AIL evaluates to 0 > > and causes the assert to unconditionally pass. Fix up the check. > > > > Signed-off-by: Brian Foster <bfoster@redhat.com> > > Whoops. > > Fixes: 22525c17ed ("xfs: log item flags are racy") > Reviewed-by: Eric Sandeen <sandeen@redhat.com> > Looks ok to me, Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> --D > > --- > > fs/xfs/xfs_buf_item.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c > > index 3458a1264a3f..3984779e5911 100644 > > --- a/fs/xfs/xfs_buf_item.c > > +++ b/fs/xfs/xfs_buf_item.c > > @@ -956,7 +956,7 @@ xfs_buf_item_relse( > > struct xfs_buf_log_item *bip = bp->b_log_item; > > > > trace_xfs_buf_item_relse(bp, _RET_IP_); > > - ASSERT(!(bip->bli_item.li_flags & XFS_LI_IN_AIL)); > > + ASSERT(!test_bit(XFS_LI_IN_AIL, &bip->bli_item.li_flags)); > > > > bp->b_log_item = NULL; > > if (list_empty(&bp->b_li_list)) > >
diff --git a/fs/xfs/xfs_buf_item.c b/fs/xfs/xfs_buf_item.c index 3458a1264a3f..3984779e5911 100644 --- a/fs/xfs/xfs_buf_item.c +++ b/fs/xfs/xfs_buf_item.c @@ -956,7 +956,7 @@ xfs_buf_item_relse( struct xfs_buf_log_item *bip = bp->b_log_item; trace_xfs_buf_item_relse(bp, _RET_IP_); - ASSERT(!(bip->bli_item.li_flags & XFS_LI_IN_AIL)); + ASSERT(!test_bit(XFS_LI_IN_AIL, &bip->bli_item.li_flags)); bp->b_log_item = NULL; if (list_empty(&bp->b_li_list))
The xfs_log_item flags were converted to atomic bitops as of commit 22525c17ed ("xfs: log item flags are racy"). The assert check for AIL presence in xfs_buf_item_relse() still uses the old value based check. This likely went unnoticed as XFS_LI_IN_AIL evaluates to 0 and causes the assert to unconditionally pass. Fix up the check. Signed-off-by: Brian Foster <bfoster@redhat.com> --- fs/xfs/xfs_buf_item.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)