]> git.baikalelectronics.ru Git - kernel.git/commit
xfs: check for stale inode before acquiring iflock on push
authorBrian Foster <bfoster@redhat.com>
Mon, 11 Jun 2012 14:39:43 +0000 (10:39 -0400)
committerBen Myers <bpm@sgi.com>
Thu, 21 Jun 2012 19:20:06 +0000 (14:20 -0500)
commitf34d761ae0d3f35f4379d1d9bc3817c7a32347a8
tree7f3bfcce7c1a6ea59267369f10ed5fa618afb3d1
parenteb273f2c8fcd2d845f8636f36e703b725cd52e1e
xfs: check for stale inode before acquiring iflock on push

An inode in the AIL can be flush locked and marked stale if
a cluster free transaction occurs at the right time. The
inode item is then marked as flushing, which causes xfsaild
to spin and leaves the filesystem stalled. This is
reproduced by running xfstests 273 in a loop for an
extended period of time.

Check for stale inodes before the flush lock. This marks
the inode as pinned, leads to a log flush and allows the
filesystem to proceed.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
fs/xfs/xfs_inode_item.c