On Fri, Nov 15, 2019 at 10:16:57AM -0600, Goldwyn Rodrigues wrote: > From: Goldwyn Rodrigues <rgoldwyn@xxxxxxxx> > > This is the main patch to switch call from > __blockdev_direct_IO() to iomap_dio_rw(). In this patch: > > Removed buffer_head references > Removed inode_dio_begin() and inode_dio_end() functions since > they are called in iomap_dio_rw(). > Renamed btrfs_get_blocks_direct() to direct_iomap_begin() and > used it as iomap_begin() > address_space.direct_IO now is a noop since direct_IO is called > from __btrfs_write_direct(). > > Removed flags parameter used for __blockdev_direct_IO(). iomap is > capable of direct I/O reads from a hole, so we don't need to > return -ENOENT. There isn't really any need to describe the low-level changes, but more what this changes at a high level, and more importantly the reasons for that. > static int btrfs_get_blocks_direct_write(struct extent_map **map, > - struct buffer_head *bh_result, > struct inode *inode, > struct btrfs_dio_data *dio_data, > u64 start, u64 len) Should this function be renamed as well? btrfs_iomap_begin_write? > +static int direct_iomap_begin(struct inode *inode, loff_t start, > + loff_t length, unsigned flags, struct iomap *iomap, > + struct iomap *srcmap) This needs a btrfs_ prefix. > + if ((em->block_start == EXTENT_MAP_HOLE) || No need for the inner braces. > - dio_end_io(dio_bio); You removed the only users of dio_end_io and the submit hook in the old dio code. Please add a patch to remove those at the end of the series. > - btrfs_submit_direct, flags); > + ret = iomap_dio_rw(iocb, iter, &dio_iomap_ops, NULL, is_sync_kiocb(iocb)); This adds a line > 80 chars.