Commit 15d04459 authored by Changpeng Liu's avatar Changpeng Liu Committed by Tomasz Zawadzki
Browse files

ublk: use 2 functions for device info and BDEV parameters



The BDEV parameters initialization function will also be
used in USER RECOVERY call.

Change-Id: If908004163ba22a076a1058d0772d8ada6f5dbd9
Signed-off-by: default avatarChangpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/19840


Reviewed-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 01d8566e
Loading
Loading
Loading
Loading
+23 −16
Original line number Diff line number Diff line
@@ -1582,7 +1582,6 @@ ublk_set_params(struct spdk_ublk_dev *ublk)
{
	int rc;

	ublk->dev_params.len = sizeof(struct ublk_params);
	rc = ublk_ctrl_cmd(ublk, UBLK_CMD_SET_PARAMS);
	if (rc < 0) {
		SPDK_ERRLOG("UBLK can't set params for dev %d, rc %s\n", ublk->ublk_id, spdk_strerror(-rc));
@@ -1594,6 +1593,27 @@ ublk_set_params(struct spdk_ublk_dev *ublk)
	}
}

static void
ublk_dev_info_init(struct spdk_ublk_dev *ublk)
{
	struct ublksrv_ctrl_dev_info uinfo = {
		.queue_depth = ublk->queue_depth,
		.nr_hw_queues = ublk->num_queues,
		.dev_id = ublk->ublk_id,
		.max_io_buf_bytes = UBLK_IO_MAX_BYTES,
		.ublksrv_pid = getpid(),
		.flags = UBLK_F_URING_CMD_COMP_IN_TASK,
	};

	if (g_ublk_tgt.user_copy) {
		uinfo.flags |= UBLK_F_USER_COPY;
	} else {
		uinfo.flags |= UBLK_F_NEED_GET_DATA;
	}

	ublk->dev_info = uinfo;
}

/* Set ublk device parameters based on bdev */
static void
ublk_info_param_init(struct spdk_ublk_dev *ublk)
@@ -1607,16 +1627,9 @@ ublk_info_param_init(struct spdk_ublk_dev *ublk)
	uint32_t io_min_size = blk_size;
	uint32_t io_opt_size = spdk_max(io_opt_blocks * blk_size, io_min_size);

	struct ublksrv_ctrl_dev_info uinfo = {
		.queue_depth = ublk->queue_depth,
		.nr_hw_queues = ublk->num_queues,
		.dev_id = ublk->ublk_id,
		.max_io_buf_bytes = UBLK_IO_MAX_BYTES,
		.ublksrv_pid = getpid(),
		.flags = UBLK_F_URING_CMD_COMP_IN_TASK,
	};
	struct ublk_params uparams = {
		.types = UBLK_PARAM_TYPE_BASIC,
		.len = sizeof(struct ublk_params),
		.basic = {
			.logical_bs_shift = spdk_u32log2(blk_size),
			.physical_bs_shift = spdk_u32log2(pblk_size),
@@ -1638,13 +1651,6 @@ ublk_info_param_init(struct spdk_ublk_dev *ublk)
		}
	}

	if (g_ublk_tgt.user_copy) {
		uinfo.flags |= UBLK_F_USER_COPY;
	} else {
		uinfo.flags |= UBLK_F_NEED_GET_DATA;
	}

	ublk->dev_info = uinfo;
	ublk->dev_params = uparams;
}

@@ -1836,6 +1842,7 @@ ublk_start_disk(const char *bdev_name, uint32_t ublk_id,
		ublk->queues[i].ring.ring_fd = -1;
	}

	ublk_dev_info_init(ublk);
	ublk_info_param_init(ublk);
	rc = ublk_ios_init(ublk);
	if (rc != 0) {