btrfs: use file_offset to limit bios size in calc_bio_boundaries

btrfs_ordered_extent->disk_bytenr can be rewritten by the zoned I/O
completion handler, and thus in general is not a good idea to limit I/O
size.  But the maximum bio size calculation can easily be done using the
file_offset fields in the btrfs_ordered_extent and btrfs_bio structures,
so switch to that instead.

Reviewed-by: Josef Bacik <josef@toxicpanda.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
Christoph Hellwig 2022-12-12 08:37:18 +01:00 коммит произвёл David Sterba
Родитель a724f313f8
Коммит 72fcf1a47b
1 изменённых файлов: 2 добавлений и 2 удалений

Просмотреть файл

@ -964,8 +964,8 @@ static void calc_bio_boundaries(struct btrfs_bio_ctrl *bio_ctrl,
ordered = btrfs_lookup_ordered_extent(inode, file_offset); ordered = btrfs_lookup_ordered_extent(inode, file_offset);
if (ordered) { if (ordered) {
bio_ctrl->len_to_oe_boundary = min_t(u32, U32_MAX, bio_ctrl->len_to_oe_boundary = min_t(u32, U32_MAX,
ordered->disk_bytenr + ordered->file_offset +
ordered->disk_num_bytes - logical); ordered->disk_num_bytes - file_offset);
btrfs_put_ordered_extent(ordered); btrfs_put_ordered_extent(ordered);
return; return;
} }