]> git.baikalelectronics.ru Git - kernel.git/commit
xfs: avoid lockdep false positives in xfs_trans_alloc
authorDave Chinner <dchinner@redhat.com>
Sat, 29 Sep 2018 03:46:21 +0000 (13:46 +1000)
committerDave Chinner <david@fromorbit.com>
Sat, 29 Sep 2018 03:46:21 +0000 (13:46 +1000)
commit1a06c8d09534fc4d930049aca01649d09fc5517e
treee5532cf7ac21ddc84ebd1cb321ff51f1a19831bf
parent83d00b6cf784e48b9dc7f8035c52323f0d7e5102
xfs: avoid lockdep false positives in xfs_trans_alloc

We've had a few reports of lockdep tripping over memory reclaim
context vs filesystem freeze "deadlocks". They all have looked
to be false positives on analysis, but it seems that they are
being tripped because we take freeze references before we run
a GFP_KERNEL allocation for the struct xfs_trans.

We can avoid this false positive vector just by re-ordering the
operations in xfs_trans_alloc(). That is. we need allocate the
structure before we take the freeze reference and enter the GFP_NOFS
allocation context that follows the xfs_trans around. This prevents
lockdep from seeing the GFP_KERNEL allocation inside the transaction
context, and that prevents it from triggering the freeze level vs
alloc context vs reclaim warnings.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/xfs_trans.c