linux-stable/fs/iomap
Christoph Hellwig c3d4ed1abe iomap: Allow filesystem to call iomap_dio_complete without i_rwsem
This is to avoid the deadlock caused in btrfs because of O_DIRECT |
O_DSYNC.

Filesystems such as btrfs require i_rwsem while performing sync on a
file. iomap_dio_rw() is called under i_rw_sem. This leads to a
deadlock because of:

iomap_dio_complete()
  generic_write_sync()
    btrfs_sync_file()

Separate out iomap_dio_complete() from iomap_dio_rw(), so filesystems
can call iomap_dio_complete() after unlocking i_rwsem.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
2020-09-28 08:51:08 -07:00
..
apply.c iomap: Make sure iomap_end is called after iomap_begin 2020-07-06 10:49:27 -07:00
buffered-io.c iomap: Set all uptodate bits for an Uptodate page 2020-09-28 08:47:01 -07:00
direct-io.c iomap: Allow filesystem to call iomap_dio_complete without i_rwsem 2020-09-28 08:51:08 -07:00
fiemap.c fs: handle FIEMAP_FLAG_SYNC in fiemap_prep 2020-06-03 23:16:55 -04:00
Makefile iomap: lift common tracing code from xfs to iomap 2019-10-21 08:51:59 -07:00
seek.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
swapfile.c iomap: use a srcmap for a read-modify-write I/O 2019-10-21 08:51:59 -07:00
trace.c iomap: lift common tracing code from xfs to iomap 2019-10-21 08:51:59 -07:00
trace.h iomap: fall back to buffered writes for invalidation failures 2020-08-05 09:24:16 -07:00