From b6c72d7b09dd80f36597bc2e28dac2537514504d Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Wed, 1 Mar 2017 10:53:18 -0700 Subject: [PATCH] nvmf: move AER command handling to session.c Change-Id: Ib2ffdc253df808547a43f7f8e52b8d4d53c09c96 Signed-off-by: Daniel Verkamp --- lib/nvmf/direct.c | 4 +--- lib/nvmf/session.c | 11 +++++++++++ lib/nvmf/session.h | 2 ++ lib/nvmf/virtual.c | 5 +---- test/lib/nvmf/direct/direct_ut.c | 6 ++++++ test/lib/nvmf/virtual/virtual_ut.c | 6 ++++++ 6 files changed, 27 insertions(+), 7 deletions(-) diff --git a/lib/nvmf/direct.c b/lib/nvmf/direct.c index a525e3b51..e8f1be128 100644 --- a/lib/nvmf/direct.c +++ b/lib/nvmf/direct.c @@ -176,10 +176,8 @@ nvmf_direct_ctrlr_process_admin_cmd(struct spdk_nvmf_request *req) } break; case SPDK_NVME_OPC_ASYNC_EVENT_REQUEST: - SPDK_TRACELOG(SPDK_TRACE_NVMF, "Async Event Request\n"); - session->aer_req = req; + return spdk_nvmf_session_async_event_request(req); - return SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS; case SPDK_NVME_OPC_KEEP_ALIVE: SPDK_TRACELOG(SPDK_TRACE_NVMF, "Keep Alive\n"); /* diff --git a/lib/nvmf/session.c b/lib/nvmf/session.c index 2826f8bc0..5a427030e 100644 --- a/lib/nvmf/session.c +++ b/lib/nvmf/session.c @@ -763,3 +763,14 @@ spdk_nvmf_session_get_features_async_event_configuration(struct spdk_nvmf_reques rsp->cdw0 = session->async_event_config.raw; return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE; } + +int +spdk_nvmf_session_async_event_request(struct spdk_nvmf_request *req) +{ + struct spdk_nvmf_session *session = req->conn->sess; + + SPDK_TRACELOG(SPDK_TRACE_NVMF, "Async Event Request\n"); + + session->aer_req = req; + return SPDK_NVMF_REQUEST_EXEC_STATUS_ASYNCHRONOUS; +} diff --git a/lib/nvmf/session.h b/lib/nvmf/session.h index 9079ea57b..9b5ff6cd4 100644 --- a/lib/nvmf/session.h +++ b/lib/nvmf/session.h @@ -129,4 +129,6 @@ int spdk_nvmf_session_get_features_number_of_queues(struct spdk_nvmf_request *re int spdk_nvmf_session_set_features_async_event_configuration(struct spdk_nvmf_request *req); int spdk_nvmf_session_get_features_async_event_configuration(struct spdk_nvmf_request *req); +int spdk_nvmf_session_async_event_request(struct spdk_nvmf_request *req); + #endif diff --git a/lib/nvmf/virtual.c b/lib/nvmf/virtual.c index a505071a9..9ed9e1a58 100644 --- a/lib/nvmf/virtual.c +++ b/lib/nvmf/virtual.c @@ -340,10 +340,7 @@ nvmf_virtual_ctrlr_process_admin_cmd(struct spdk_nvmf_request *req) case SPDK_NVME_OPC_SET_FEATURES: return nvmf_virtual_ctrlr_set_features(req); case SPDK_NVME_OPC_ASYNC_EVENT_REQUEST: - SPDK_TRACELOG(SPDK_TRACE_NVMF, "Async Event Request\n"); - /* TODO: Just release the request as consumed. AER events will never - * be triggered. */ - return SPDK_NVMF_REQUEST_EXEC_STATUS_RELEASE; + return spdk_nvmf_session_async_event_request(req); case SPDK_NVME_OPC_KEEP_ALIVE: SPDK_TRACELOG(SPDK_TRACE_NVMF, "Keep Alive\n"); /* diff --git a/test/lib/nvmf/direct/direct_ut.c b/test/lib/nvmf/direct/direct_ut.c index 6bbd9dbd3..2dba091e6 100644 --- a/test/lib/nvmf/direct/direct_ut.c +++ b/test/lib/nvmf/direct/direct_ut.c @@ -174,6 +174,12 @@ spdk_nvmf_session_get_features_async_event_configuration(struct spdk_nvmf_reques return -1; } +int +spdk_nvmf_session_async_event_request(struct spdk_nvmf_request *req) +{ + return -1; +} + /* test suite function */ static void nvmf_test_nvmf_direct_ctrlr_admin_identify_nslist(void) diff --git a/test/lib/nvmf/virtual/virtual_ut.c b/test/lib/nvmf/virtual/virtual_ut.c index beb18f364..c4ee0258a 100644 --- a/test/lib/nvmf/virtual/virtual_ut.c +++ b/test/lib/nvmf/virtual/virtual_ut.c @@ -88,6 +88,12 @@ spdk_nvmf_session_get_features_async_event_configuration(struct spdk_nvmf_reques return -1; } +int +spdk_nvmf_session_async_event_request(struct spdk_nvmf_request *req) +{ + return -1; +} + int spdk_nvmf_request_complete(struct spdk_nvmf_request *req) {