Commit 6a33e252 authored by Jim Harris's avatar Jim Harris Committed by Tomasz Zawadzki
Browse files

bdev_nvme: fix selector default for set_multipath_policy



Commit 4d566944 set the default selector policy for active/active,
but failed to account for what this would do when active/passive
was selected.

So initialize the selector to UINT32_MAX, then after we know the policy
if the selector didn't change we can pick the appropriate default.

Fixes commit 4d566944 ("bdev/nvme: make ROUND_ROBIN the default multipath policy for active/active")
Signed-off-by: default avatarJim Harris <jim.harris@samsung.com>
Change-Id: I73cbaecc4b8a46659ecd6e42b2c1b3f934212d9d
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/23026


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent a01e1ef9
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -2377,7 +2377,7 @@ rpc_bdev_nvme_set_multipath_policy(struct spdk_jsonrpc_request *request,
	}

	ctx->req.rr_min_io = UINT32_MAX;
	ctx->req.selector = BDEV_NVME_MP_SELECTOR_ROUND_ROBIN;
	ctx->req.selector = UINT32_MAX;

	if (spdk_json_decode_object(params, rpc_set_multipath_policy_decoders,
				    SPDK_COUNTOF(rpc_set_multipath_policy_decoders),
@@ -2389,6 +2389,13 @@ rpc_bdev_nvme_set_multipath_policy(struct spdk_jsonrpc_request *request,
	}

	ctx->request = request;
	if (ctx->req.selector == UINT32_MAX) {
		if (ctx->req.policy == BDEV_NVME_MP_POLICY_ACTIVE_ACTIVE) {
			ctx->req.selector = BDEV_NVME_MP_SELECTOR_ROUND_ROBIN;
		} else {
			ctx->req.selector = 0;
		}
	}

	if (ctx->req.policy != BDEV_NVME_MP_POLICY_ACTIVE_ACTIVE && ctx->req.selector > 0) {
		SPDK_ERRLOG("selector only works in active_active mode\n");