Commit 49227970 authored by Damiano Cipriani's avatar Damiano Cipriani Committed by Tomasz Zawadzki
Browse files

nvme: add ctrlr to spdk_nvme_ctrlr_aer_completion



A pointer to spdk_nvme_ctrlr has been added to the struct
spdk_nvme_ctrlr_aer_completion to be used inside the function
nvme_ctrlr_process_async_event.
This commit is the first step about handling namespace attribute
change event asynchronously.

Change-Id: I00f85ffd51b436a4de395b69851eb03d2fb72600
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/+/26148


Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Reviewed-by: default avatarVasuki Manikarnike <vasuki.manikarnike@hpe.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarJacek Kalwas <jacek.kalwas@nutanix.com>
parent 92add67f
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -3262,9 +3262,10 @@ free_buffer:
}

static void
nvme_ctrlr_process_async_event(struct spdk_nvme_ctrlr *ctrlr,
			       const struct spdk_nvme_cpl *cpl)
nvme_ctrlr_process_async_event(struct spdk_nvme_ctrlr_aer_completion *async_event)
{
	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;
@@ -3316,6 +3317,7 @@ nvme_ctrlr_queue_async_event(struct spdk_nvme_ctrlr *ctrlr,
			NVME_CTRLR_ERRLOG(ctrlr, "Alloc nvme event failed, ignore the event\n");
			return;
		}
		async_event->ctrlr = ctrlr;
		async_event->cpl = *cpl;

		STAILQ_INSERT_TAIL(&proc->async_events, async_event, link);
@@ -3333,7 +3335,7 @@ nvme_ctrlr_complete_queued_async_events(struct spdk_nvme_ctrlr *ctrlr)
	STAILQ_FOREACH_SAFE(async_event, &active_proc->async_events, link, async_event_tmp) {
		STAILQ_REMOVE(&active_proc->async_events, async_event,
			      spdk_nvme_ctrlr_aer_completion, link);
		nvme_ctrlr_process_async_event(ctrlr, &async_event->cpl);
		nvme_ctrlr_process_async_event(async_event);
		spdk_free(async_event);
	}
}
+1 −0
Original line number Diff line number Diff line
@@ -916,6 +916,7 @@ enum nvme_ctrlr_state {
#define NVME_TIMEOUT_KEEP_EXISTING	UINT64_MAX

struct spdk_nvme_ctrlr_aer_completion {
	struct spdk_nvme_ctrlr	*ctrlr;
	struct spdk_nvme_cpl	cpl;
	STAILQ_ENTRY(spdk_nvme_ctrlr_aer_completion) link;
};