xfs: defered work could create precommits
authorDave Chinner <dchinner@redhat.com>
Sun, 4 Jun 2023 18:07:27 +0000 (04:07 +1000)
committerDave Chinner <david@fromorbit.com>
Sun, 4 Jun 2023 18:07:27 +0000 (04:07 +1000)
commitcb042117488dbf0b3b38b05771639890fada9a52
tree7f0a4368b50a39b7a1d893c2cddc26ac2fbd0160
parent00dcd17cfa7f103f7d640ffd34645a2ddab96330
xfs: defered work could create precommits

To fix a AGI-AGF-inode cluster buffer deadlock, we need to move
inode cluster buffer operations to the ->iop_precommit() method.
However, this means that deferred operations can require precommits
to be run on the final transaction that the deferred ops pass back
to xfs_trans_commit() context. This will be exposed by attribute
handling, in that the last changes to the inode in the attr set
state machine "disappear" because the precommit operation is not run.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_trans.c