summaryrefslogtreecommitdiff
path: root/fs/btrfs/extent_io.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2022-05-26 09:36:35 +0200
committerDavid Sterba <dsterba@suse.com>2022-07-25 17:45:33 +0200
commitc93104e7588e04debb20bdc481e431f87748f3c1 (patch)
tree9bc185c75d0fa70154fec69f90863e10469b9086 /fs/btrfs/extent_io.c
parente6484bd4881f340e04de6833230225ee3ba7ce6d (diff)
downloadlwn-c93104e7588e04debb20bdc481e431f87748f3c1.tar.gz
lwn-c93104e7588e04debb20bdc481e431f87748f3c1.zip
btrfs: split btrfs_submit_data_bio to read and write parts
Split btrfs_submit_data_bio into one helper for reads and one for writes. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/extent_io.c')
-rw-r--r--fs/btrfs/extent_io.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 69b6b4ba009e..47407e6bb91e 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -182,17 +182,20 @@ static void submit_one_bio(struct bio *bio, int mirror_num,
enum btrfs_compression_type compress_type)
{
struct extent_io_tree *tree = bio->bi_private;
+ struct inode *inode = tree->private_data;
bio->bi_private = NULL;
/* Caller should ensure the bio has at least some range added */
ASSERT(bio->bi_iter.bi_size);
- if (is_data_inode(tree->private_data))
- btrfs_submit_data_bio(tree->private_data, bio, mirror_num,
- compress_type);
+ if (!is_data_inode(inode))
+ btrfs_submit_metadata_bio(inode, bio, mirror_num);
+ else if (btrfs_op(bio) == BTRFS_MAP_WRITE)
+ btrfs_submit_data_write_bio(inode, bio, mirror_num);
else
- btrfs_submit_metadata_bio(tree->private_data, bio, mirror_num);
+ btrfs_submit_data_read_bio(inode, bio, mirror_num, compress_type);
+
/*
* Above submission hooks will handle the error by ending the bio,
* which will do the cleanup properly. So here we should not return
@@ -2786,7 +2789,7 @@ static void submit_data_read_repair(struct inode *inode, struct bio *failed_bio,
ret = btrfs_repair_one_sector(inode, failed_bio,
bio_offset + offset,
page, pgoff + offset, start + offset,
- failed_mirror, btrfs_submit_data_bio);
+ failed_mirror, btrfs_submit_data_read_bio);
if (!ret) {
/*
* We have submitted the read repair, the page release