nvmf: ctrlr_get_ana_state() always returns optimized if ana_reporting is disabled
if ctrlr->listener was NULL, nvmf_ctrlr_get_ana_state() returned
inaccessible even if ana_reporting was disabled. Then the corresponding
initiator received unexpected ANA error and could not process it
appropriately.
Change nvmf_ctrlr_get_ana_state() to return optimized always if
ana_reporting is disabled.
Additionally, check if ctrlr->listener is not NULL before calling
SPDK_DTRACE_PROBE3().
Fixes #2335
Signed-off-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11402 (master)
(cherry picked from commit c777cfa700
)
Change-Id: Ib2376694cf89d85ec5687fba7e87439f494f30b0
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12465
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
This commit is contained in:
parent
ae7b47131b
commit
e6668d8df6
@ -2139,6 +2139,10 @@ typedef enum spdk_nvme_ana_state spdk_nvme_ana_state_t;
|
||||
static inline spdk_nvme_ana_state_t
|
||||
nvmf_ctrlr_get_ana_state(struct spdk_nvmf_ctrlr *ctrlr, uint32_t anagrpid)
|
||||
{
|
||||
if (!ctrlr->subsys->flags.ana_reporting) {
|
||||
return SPDK_NVME_ANA_OPTIMIZED_STATE;
|
||||
}
|
||||
|
||||
if (spdk_unlikely(ctrlr->listener == NULL)) {
|
||||
return SPDK_NVME_ANA_INACCESSIBLE_STATE;
|
||||
}
|
||||
@ -3952,9 +3956,11 @@ nvmf_ctrlr_process_io_cmd(struct spdk_nvmf_request *req)
|
||||
return SPDK_NVMF_REQUEST_EXEC_STATUS_COMPLETE;
|
||||
}
|
||||
|
||||
SPDK_DTRACE_PROBE3(nvmf_request_io_exec_path, req,
|
||||
req->qpair->ctrlr->listener->trid->traddr,
|
||||
req->qpair->ctrlr->listener->trid->trsvcid);
|
||||
if (spdk_likely(ctrlr->listener != NULL)) {
|
||||
SPDK_DTRACE_PROBE3(nvmf_request_io_exec_path, req,
|
||||
ctrlr->listener->trid->traddr,
|
||||
ctrlr->listener->trid->trsvcid);
|
||||
}
|
||||
|
||||
/* scan-build falsely reporting dereference of null pointer */
|
||||
assert(group != NULL && group->sgroups != NULL);
|
||||
|
Loading…
Reference in New Issue
Block a user