summaryrefslogtreecommitdiff
path: root/fs/btrfs
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2023-05-03 17:24:29 +0200
committerDavid Sterba <dsterba@suse.com>2023-05-15 13:04:47 +0200
commit04e64e15eefd71f5de8bded80e2bd5f3b26dccc3 (patch)
tree8cfe54ae93e6bca5993ad50e00edc803e2df2d9f /fs/btrfs
parentcc51fffdc0ea68ebb6487e393d84810720dee3e2 (diff)
downloadlinux-next-04e64e15eefd71f5de8bded80e2bd5f3b26dccc3.tar.gz
btrfs: do not try to unlock the extent for non-subpage metadata reads
Only subpage metadata reads lock the extent. Don't try to unlock it and waste cycles in the extent tree lookup for PAGE_SIZE or larger metadata. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs')
-rw-r--r--fs/btrfs/extent_io.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 4581ee5a0835..e35dfae57e50 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -4208,8 +4208,10 @@ static void extent_buffer_read_end_io(struct btrfs_bio *bbio)
bio_offset += bvec->bv_len;
}
- unlock_extent(&bbio->inode->io_tree, eb->start,
- eb->start + bio_offset - 1, NULL);
+ if (eb->fs_info->nodesize < PAGE_SIZE) {
+ unlock_extent(&bbio->inode->io_tree, eb->start,
+ eb->start + bio_offset - 1, NULL);
+ }
free_extent_buffer(eb);
bio_put(&bbio->bio);