Commit 198bd49e authored by Johannes Thumshirn's avatar Johannes Thumshirn Committed by David Sterba
Browse files

btrfs: sink calc_bio_boundaries into its only caller



Nowadays calc_bio_boundaries() is a relatively simple function that only
guarantees the one bio equals to one ordered extent rule for uncompressed
Zone Append bios.

Sink it into it's only caller alloc_new_bio().

Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 24e6c808
Loading
Loading
Loading
Loading
+15 −22
Original line number Diff line number Diff line
@@ -898,10 +898,19 @@ static bool btrfs_bio_is_contig(struct btrfs_bio_ctrl *bio_ctrl,
		page_offset(page) + pg_offset;
}

static void calc_bio_boundaries(struct btrfs_bio_ctrl *bio_ctrl,
				struct btrfs_inode *inode, u64 file_offset)
static void alloc_new_bio(struct btrfs_inode *inode,
			  struct btrfs_bio_ctrl *bio_ctrl,
			  u64 disk_bytenr, u64 file_offset)
{
	struct btrfs_ordered_extent *ordered;
	struct btrfs_fs_info *fs_info = inode->root->fs_info;
	struct bio *bio;

	bio = btrfs_bio_alloc(BIO_MAX_VECS, bio_ctrl->opf, inode,
			      bio_ctrl->end_io_func, NULL);
	bio->bi_iter.bi_sector = disk_bytenr >> SECTOR_SHIFT;
	btrfs_bio(bio)->file_offset = file_offset;
	bio_ctrl->bio = bio;
	bio_ctrl->len_to_oe_boundary = U32_MAX;

	/*
	 * Limit the extent to the ordered boundary for Zone Append.
@@ -909,34 +918,18 @@ static void calc_bio_boundaries(struct btrfs_bio_ctrl *bio_ctrl,
	 * them.
	 */
	if (bio_ctrl->compress_type == BTRFS_COMPRESS_NONE &&
	    btrfs_use_zone_append(btrfs_bio(bio_ctrl->bio))) {
	    btrfs_use_zone_append(btrfs_bio(bio))) {
		struct btrfs_ordered_extent *ordered;

		ordered = btrfs_lookup_ordered_extent(inode, file_offset);
		if (ordered) {
			bio_ctrl->len_to_oe_boundary = min_t(u32, U32_MAX,
					ordered->file_offset +
					ordered->disk_num_bytes - file_offset);
			btrfs_put_ordered_extent(ordered);
			return;
		}
	}

	bio_ctrl->len_to_oe_boundary = U32_MAX;
}

static void alloc_new_bio(struct btrfs_inode *inode,
			  struct btrfs_bio_ctrl *bio_ctrl,
			  u64 disk_bytenr, u64 file_offset)
{
	struct btrfs_fs_info *fs_info = inode->root->fs_info;
	struct bio *bio;

	bio = btrfs_bio_alloc(BIO_MAX_VECS, bio_ctrl->opf, inode,
			      bio_ctrl->end_io_func, NULL);
	bio->bi_iter.bi_sector = disk_bytenr >> SECTOR_SHIFT;
	btrfs_bio(bio)->file_offset = file_offset;
	bio_ctrl->bio = bio;
	calc_bio_boundaries(bio_ctrl, inode, file_offset);

	if (bio_ctrl->wbc) {
		/*
		 * Pick the last added device to support cgroup writeback.  For