Commit 42ba50e0 authored by Yalong Wang's avatar Yalong Wang Committed by Jim Harris
Browse files

lib/bdev: Abstract the logic of getting bdev rw_boundary into bdev_rw_get_io_boundary



Change-Id: I3c4cb4f17bdd5c376e65caf1e2955b3ff6d967e0
Signed-off-by: default avatarYalong Wang <yalong9@staff.sina.com.cn>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/25803


Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Reviewed-by: default avatarGangCao <gang.cao@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarChangpeng Liu <changpeliu@tencent.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
parent b2818ead
Loading
Loading
Loading
Loading
+17 −7
Original line number Diff line number Diff line
@@ -3037,16 +3037,12 @@ bdev_queue_io_wait_with_cb(struct spdk_bdev_io *bdev_io, spdk_bdev_io_wait_cb cb
	}
}

static bool
bdev_rw_should_split(struct spdk_bdev_io *bdev_io)
static inline uint32_t
bdev_rw_get_io_boundary(struct spdk_bdev *bdev, uint8_t io_type)
{
	uint32_t io_boundary;
	struct spdk_bdev *bdev = bdev_io->bdev;
	uint32_t max_segment_size = bdev->max_segment_size;
	uint32_t max_size = bdev->max_rw_size;
	int max_segs = bdev->max_num_segments;

	if (bdev_io->type == SPDK_BDEV_IO_TYPE_WRITE && bdev->split_on_write_unit) {
	if (io_type == SPDK_BDEV_IO_TYPE_WRITE && bdev->split_on_write_unit) {
		io_boundary = bdev->write_unit_size;
	} else if (bdev->split_on_optimal_io_boundary) {
		io_boundary = bdev->optimal_io_boundary;
@@ -3054,6 +3050,20 @@ bdev_rw_should_split(struct spdk_bdev_io *bdev_io)
		io_boundary = 0;
	}

	return io_boundary;
}

static bool
bdev_rw_should_split(struct spdk_bdev_io *bdev_io)
{
	uint32_t io_boundary;
	struct spdk_bdev *bdev = bdev_io->bdev;
	uint32_t max_segment_size = bdev->max_segment_size;
	uint32_t max_size = bdev->max_rw_size;
	int max_segs = bdev->max_num_segments;

	io_boundary = bdev_rw_get_io_boundary(bdev, bdev_io->type);

	if (spdk_likely(!io_boundary && !max_segs && !max_segment_size && !max_size)) {
		return false;
	}