From 65ef1f32a63bfc43f8d67e939b551f6dcf976e54 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Wed, 30 Jun 2021 20:24:45 +0000 Subject: [PATCH] nvmf: check for null admin_qpair when updating subsystem pg It is possible for a controller to get added to the subsystem before its admin_qpair has been assigned. We need to account for that when traversing the subsystem's ctrlr list when determining ns and ana_changes that need to be reported for the ctrlr. Found while doing stress testing with connects and subsystem ns add/remove. Signed-off-by: Jim Harris Change-Id: Ie54dc6ac202faeaeace054e6599f2dea2f30211e Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/8570 Tested-by: SPDK CI Jenkins Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Reviewed-by: Shuhei Matsumoto Reviewed-by: Changpeng Liu Reviewed-by: Ben Walker --- lib/nvmf/nvmf.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/nvmf/nvmf.c b/lib/nvmf/nvmf.c index 8e25d0f1f..7a9960edb 100644 --- a/lib/nvmf/nvmf.c +++ b/lib/nvmf/nvmf.c @@ -1315,6 +1315,12 @@ poll_group_update_subsystem(struct spdk_nvmf_poll_group *group, if (ns_changed) { TAILQ_FOREACH(ctrlr, &subsystem->ctrlrs, link) { + /* It is possible that a ctrlr was added but the admin_qpair hasn't been + * assigned yet. + */ + if (!ctrlr->admin_qpair) { + continue; + } if (ctrlr->admin_qpair->group == group) { nvmf_ctrlr_async_event_ns_notice(ctrlr); nvmf_ctrlr_async_event_ana_change_notice(ctrlr);