btrfs: do not try to unlock the extent for non-subpage metadata reads
authorChristoph Hellwig <hch@lst.de>
Wed, 3 May 2023 15:24:29 +0000 (17:24 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2023 11:59:27 +0000 (13:59 +0200)
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: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c

index 4581ee5..e35dfae 100644 (file)
@@ -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);