aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/fs/btrfs/tree-log.c
diff options
context:
space:
mode:
authorOmar Sandoval <osandov@fb.com>2020-04-16 14:46:22 -0700
committerDavid Sterba <dsterba@suse.com>2020-05-25 11:25:26 +0200
commit769b4f2497bdb31cd2c7b53d171bc7c13ef4e793 (patch)
treec6ff5d6bfd95486b2c1e70b9bb1561dc52da0138 /fs/btrfs/tree-log.c
parentbtrfs: put direct I/O checksums in btrfs_dio_private instead of bio (diff)
downloadwireguard-linux-769b4f2497bdb31cd2c7b53d171bc7c13ef4e793.tar.xz
wireguard-linux-769b4f2497bdb31cd2c7b53d171bc7c13ef4e793.zip
btrfs: get rid of one layer of bios in direct I/O
In the worst case, there are _4_ layers of bios in the Btrfs direct I/O path: 1. The bio created by the generic direct I/O code (dio_bio). 2. A clone of dio_bio we create in btrfs_submit_direct() to represent the entire direct I/O range (orig_bio). 3. A partial clone of orig_bio limited to the size of a RAID stripe that we create in btrfs_submit_direct_hook(). 4. Clones of each of those split bios for each RAID stripe that we create in btrfs_map_bio(). As of the previous commit, the second layer (orig_bio) is no longer needed for anything: we can split dio_bio instead, and complete dio_bio directly when all of the cloned bios complete. This lets us clean up a bunch of cruft, including dip->subio_endio and dip->errors (we can use dio_bio->bi_status instead). It also enables the next big cleanup of direct I/O read repair. Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Omar Sandoval <osandov@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/tree-log.c')
0 files changed, 0 insertions, 0 deletions