Hi all, this series moves a large amount of duplicate code below btrfs_submit_bio into what I call the 'storage' layer. Instead of duplicating code to checksum, check checksums and repair and split bios in all the caller of btrfs_submit_bio (buffered I/O, direct I/O, compressed I/O, encoded I/O), the work is done one in a central place, often more optiomal and without slight changes in behavior. Once that is done the upper layers also don't need to split the bios for extent boundaries, as the storage layer can do that itself, including splitting the bios for the zone append limits for zoned I/O. The split work is inspired by an earlier series from Qu, from which it also reuses a few patches. A git tree is also available: git://git.infradead.org/users/hch/misc.git btrfs-bio-split Gitweb: http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/btrfs-bio-split Changes since v2: - split up one patch into 15 and update the commit message - fix a use after free in run_one_async_done (the end result is identical to v2 except for the one line fix in run_one_async_done) Changes since v2: - minor rebase to latest misc-next - pick up various reviews for all patches Changes since v1: - rebased to latest btrfs/misc-next - added a new patch to remove the fs_info argument to btrfs_submit_bio - clean up the repair_one_sector calling convention a bit - don't move file_offset for ONE_ORDERED bios in btrfs_split_bio - temporarily use btrfs_zoned_get_device in alloc_compressed_bio - minor refactoring of some of the checksum helpers - split up a few patches - drop a few of the blk_status_t to int conversion for now - various whitespace fixes Diffstat: block/blk-merge.c | 3 fs/btrfs/bio.c | 547 ++++++++++++++++++++++++++++++++++++---- fs/btrfs/bio.h | 67 +--- fs/btrfs/btrfs_inode.h | 22 - fs/btrfs/compression.c | 273 +++----------------- fs/btrfs/compression.h | 3 fs/btrfs/disk-io.c | 203 +-------------- fs/btrfs/disk-io.h | 11 fs/btrfs/extent-io-tree.h | 1 fs/btrfs/extent_io.c | 556 ++++------------------------------------- fs/btrfs/extent_io.h | 31 -- fs/btrfs/file-item.c | 74 +---- fs/btrfs/file-item.h | 8 fs/btrfs/fs.h | 5 fs/btrfs/inode.c | 621 ++++++---------------------------------------- fs/btrfs/volumes.c | 115 ++------ fs/btrfs/volumes.h | 18 - fs/btrfs/zoned.c | 85 ++---- fs/btrfs/zoned.h | 16 - fs/iomap/direct-io.c | 10 include/linux/bio.h | 4 include/linux/iomap.h | 3 22 files changed, 819 insertions(+), 1857 deletions(-)