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

bdev/nvme: improve multipath policy validation



Earlier patch that fixed issue #3338 indicated that we can do a better
job of validating the multipath policy+selector combinations, which
this patch implements.

Suggested-by: default avatarShuhei Matsumoto <shuhei.matsumoto@nvidia.com>
Signed-off-by: default avatarJim Harris <jim.harris@samsung.com>
Change-Id: I5e8a4268eab8b87c2778b802a6184034da1aad00
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22836


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 4d566944
Loading
Loading
Loading
Loading
+18 −5
Original line number Diff line number Diff line
@@ -5103,14 +5103,27 @@ bdev_nvme_set_multipath_policy(const char *name, enum bdev_nvme_multipath_policy

	assert(cb_fn != NULL);

	if (policy == BDEV_NVME_MP_POLICY_ACTIVE_ACTIVE && selector == BDEV_NVME_MP_SELECTOR_ROUND_ROBIN) {
	switch (policy) {
	case BDEV_NVME_MP_POLICY_ACTIVE_PASSIVE:
		break;
	case BDEV_NVME_MP_POLICY_ACTIVE_ACTIVE:
		switch (selector) {
		case BDEV_NVME_MP_SELECTOR_ROUND_ROBIN:
			if (rr_min_io == UINT32_MAX) {
				rr_min_io = 1;
			} else if (rr_min_io == 0) {
				rc = -EINVAL;
				goto exit;
			}
	} else if (rr_min_io != UINT32_MAX) {
			break;
		case BDEV_NVME_MP_SELECTOR_QUEUE_DEPTH:
			break;
		default:
			rc = -EINVAL;
			goto exit;
		}
		break;
	default:
		rc = -EINVAL;
		goto exit;
	}