Dave Chinner 8121768321 xfs: fix swapext ilock deadlock
xfs_swap_extents() holds the ilock over a call to
filemap_write_and_wait(), which can then try to write data and take
the ilock. That causes a self-deadlock.

Fix the deadlock and clean up the code by separating the locking
appropriately. Add a lockflags variable to track what locks we are
holding as we gain and drop them and cleanup the error handling to
always use "out_unlock" with the lockflags variable.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Dave Chinner <david@fromorbit.com>
2014-08-04 13:29:32 +10:00
..
2014-03-07 16:19:14 +11:00
2013-11-06 16:31:27 -06:00
2014-06-25 14:57:53 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00
2014-05-05 17:30:15 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00
2014-08-04 13:28:20 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00
2014-08-04 13:22:49 +10:00
2014-08-04 13:28:20 +10:00
2014-08-04 13:28:20 +10:00
2014-08-04 13:28:20 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00
2014-08-04 13:28:20 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00
2014-06-25 14:58:08 +10:00