This is an effort to use iomap for direct I/O in btrfs. This would change the call from __blockdev_direct_io() to iomap_dio_rw(). The main objective is to lose the buffer head and use bio defined by iomap code, and hopefully to use more of generic-FS codebase. These patches are based on xfs/iomap-for-next, though I tested it against the patches on xfs/iomap-for-next on top of v5.4 (there are no changes to existing iomap patches). I have tested it against xfstests/btrfs. Changes since v1 - Incorporated back the efficiency change for inode locking - Review comments about coding style and git comments - Merge related patches into one - Direct read to go through btrfs_direct_IO() - Removal of no longer used function dio_end_io() fs/btrfs/ctree.h | 2 fs/btrfs/extent_io.c | 33 ++++----- fs/btrfs/file.c | 15 +++- fs/btrfs/inode.c | 171 +++++++++++++++++++++++--------------------------- fs/direct-io.c | 19 ----- fs/iomap/direct-io.c | 14 ++-- include/linux/fs.h | 3 include/linux/iomap.h | 2 mm/filemap.c | 13 ++- 9 files changed, 131 insertions(+), 141 deletions(-) -- Goldwyn