summaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_discard.c
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2014-08-04 13:29:32 +1000
committerDave Chinner <david@fromorbit.com>2014-08-04 13:29:32 +1000
commit812176832169c77b4bacddd01edc3e55340263fd (patch)
tree6f3bde524887cb6f8e66f3d86c89b28118ab795b /fs/xfs/xfs_discard.c
parentb92cc59f69537f26d5a42e4171ccc864ae4d9383 (diff)
downloadblackbird-obmc-linux-812176832169c77b4bacddd01edc3e55340263fd.tar.gz
blackbird-obmc-linux-812176832169c77b4bacddd01edc3e55340263fd.zip
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>
Diffstat (limited to 'fs/xfs/xfs_discard.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud