Commit 8cf4b44b authored by Tomasz Zawadzki's avatar Tomasz Zawadzki Committed by Tomasz Zawadzki
Browse files

lib/nvme: combine aer_cb and event free to one function



Added nvme_ctrlr_process_async_event_finish() that
issues the aer_cb_fn() and frees the async_event.

Later in the series this is called in multiple places.

Change-Id: I2b9888222016e9ea04cf13bb174c6a3f38bcd670
Signed-off-by: default avatarDamiano Cipriani <damiano.cipriani@suse.com>
Signed-off-by: default avatarTomasz Zawadzki <tomasz.zawadzki@nutanix.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26253


Reviewed-by: default avatarJacek Kalwas <jacek.kalwas@nutanix.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
parent cb3471fb
Loading
Loading
Loading
Loading
+14 −6
Original line number Diff line number Diff line
@@ -3188,6 +3188,19 @@ nvme_ctrlr_set_host_id(struct spdk_nvme_ctrlr *ctrlr)
	return 0;
}

static void
nvme_ctrlr_process_async_event_finish(struct spdk_nvme_ctrlr_aer_completion *async_event)
{
	struct spdk_nvme_ctrlr_process	*active_proc;

	active_proc = nvme_ctrlr_get_current_process(async_event->ctrlr);
	if (active_proc && active_proc->aer_cb_fn) {
		active_proc->aer_cb_fn(active_proc->aer_cb_arg, &async_event->cpl);
	}

	spdk_free(async_event);
}

void
nvme_ctrlr_update_namespaces(struct spdk_nvme_ctrlr *ctrlr)
{
@@ -3267,7 +3280,6 @@ nvme_ctrlr_process_async_event(struct spdk_nvme_ctrlr_aer_completion *async_even
	struct spdk_nvme_ctrlr *ctrlr = async_event->ctrlr;
	struct spdk_nvme_cpl *cpl = &async_event->cpl;
	union spdk_nvme_async_event_completion event;
	struct spdk_nvme_ctrlr_process *active_proc;
	int rc;

	event.raw = cpl->cdw0;
@@ -3296,10 +3308,7 @@ nvme_ctrlr_process_async_event(struct spdk_nvme_ctrlr_aer_completion *async_even
		}
	}

	active_proc = nvme_ctrlr_get_current_process(ctrlr);
	if (active_proc && active_proc->aer_cb_fn) {
		active_proc->aer_cb_fn(active_proc->aer_cb_arg, cpl);
	}
	nvme_ctrlr_process_async_event_finish(async_event);
}

static void
@@ -3336,7 +3345,6 @@ nvme_ctrlr_complete_queued_async_events(struct spdk_nvme_ctrlr *ctrlr)
		STAILQ_REMOVE(&active_proc->async_events, async_event,
			      spdk_nvme_ctrlr_aer_completion, link);
		nvme_ctrlr_process_async_event(async_event);
		spdk_free(async_event);
	}
}