Commit ed10a067 authored by Pierre Lestringant's avatar Pierre Lestringant Committed by Tomasz Zawadzki
Browse files

nvme: fix assert in spdk_nvme_poll_group_process_completions



If two transport poll groups return an error, the assert "just to be safe"
will fail.

Change-Id: Ibd50ef2bfb94dde5dd4225928d8db2e1e645370d
Signed-off-by: default avatarPierre Lestringant <plestringant@kalrayinc.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26849


Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarJacek Kalwas <jacek.kalwas@nutanix.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Community-CI: Mellanox Build Bot
parent 27a30e7a
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -363,7 +363,7 @@ spdk_nvme_poll_group_process_completions(struct spdk_nvme_poll_group *group,
		uint32_t completions_per_qpair, spdk_nvme_disconnected_qpair_cb disconnected_qpair_cb)
{
	struct spdk_nvme_transport_poll_group *tgroup;
	int64_t local_completions = 0, error_reason = 0, num_completions = 0;
	int64_t error_reason = 0, num_completions = 0;

	if (disconnected_qpair_cb == NULL) {
		return -EINVAL;
@@ -375,10 +375,14 @@ spdk_nvme_poll_group_process_completions(struct spdk_nvme_poll_group *group,
	group->in_process_completions = true;

	STAILQ_FOREACH(tgroup, &group->tgroups, link) {
		int64_t local_completions;

		local_completions = nvme_transport_poll_group_process_completions(tgroup, completions_per_qpair,
				    disconnected_qpair_cb);
		if (local_completions < 0 && error_reason == 0) {
		if (local_completions < 0) {
			if (!error_reason) {
				error_reason = local_completions;
			}
		} else {
			num_completions += local_completions;
			/* Just to be safe */