Commit dbadf72e authored by IgorVechriko's avatar IgorVechriko Committed by Tomasz Zawadzki
Browse files

nvmf: fix optimal poll group selection logic for rdma



In origin code if poll group with zero qpairs were find on 2-nd or higher while loop iteration then pg_min will be selected for optiomal choice but actual poll group wich were return zero qpairs is pg_current. Performed changes is fixing this occasion

Change-Id: Ifb6946a6d0ccd2c8ce43285a4732142404d4cffc
Signed-off-by: default avatarIgorVechriko <vechirkoigor@gmail.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/20664


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 7ff0d5e6
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -4124,7 +4124,9 @@ nvmf_rdma_get_optimal_poll_group(struct spdk_nvmf_qpair *qpair)
		pg_current = *pg;
		min_value = nvmf_poll_group_get_io_qpair_count(pg_current->group.group);

		while ((count = nvmf_poll_group_get_io_qpair_count(pg_current->group.group)) > 0) {
		while (1) {
			count = nvmf_poll_group_get_io_qpair_count(pg_current->group.group);

			if (count < min_value) {
				min_value = count;
				pg_min = pg_current;
@@ -4135,7 +4137,7 @@ nvmf_rdma_get_optimal_poll_group(struct spdk_nvmf_qpair *qpair)
				pg_current = TAILQ_FIRST(&rtransport->poll_groups);
			}

			if (pg_current == pg_start) {
			if (pg_current == pg_start || min_value == 0) {
				break;
			}
		}