Spdk/lib/nvmf
Alexey Marchuk 92f62deefc nvmf: Fix race condition when adding IO qpair
Similar issue was fixed in
813869d823
nvmf: Fix possible race condition when adding IO qpair

This patch fixes the same issue which occurs a bit later,
when a  message is delivered to another thread. This issue
occurred on CI, callstack is the following:

00:11:46.296  #6  0x00007f2705199f05 in __ubsan_handle_type_mismatch_v1 () from /lib64/libubsan.so.1
00:11:46.296  No symbol table info available.
00:11:46.296  #7  0x00007f27067ace6f in ctrlr_add_qpair_and_update_rsp (qpair=0x221edc0, ctrlr=0x1dc4ea0, rsp=0x2242918) at ctrlr.c:230
00:11:46.296          __PRETTY_FUNCTION__ = "ctrlr_add_qpair_and_update_rsp"
00:11:46.296          __func__ = "ctrlr_add_qpair_and_update_rsp"
00:11:46.296  #8  0x00007f27067b1d0b in nvmf_ctrlr_add_io_qpair (ctx=0x2242540) at ctrlr.c:534
00:11:46.296          req = 0x2242540
00:11:46.296          rsp = 0x2242918
00:11:46.296          qpair = 0x221edc0
00:11:46.296          ctrlr = 0x1dc4ea0
00:11:46.296          __func__ = "nvmf_ctrlr_add_io_qpair"
00:11:46.296  #9  0x00007f27062553ce in msg_queue_run_batch (thread=0x1cff540, max_msgs=8) at thread.c:553

where line 230 in ctrlr.c was
assert(ctrlr->admin_qpair->group->thread == spdk_get_thread());
That means that admin qpair was disconnected from the poll
group and controller is in the process of destruction

Change-Id: I818ba56adda5ed3488a8df78483c0b6839758192
Signed-off-by: Alexey Marchuk <alexeymar@mellanox.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6364
Community-CI: Broadcom CI
Community-CI: Mellanox Build Bot
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>
2021-02-18 13:37:01 +00:00
..
ctrlr_bdev.c log: remove internal log.h header 2020-10-15 08:23:39 +00:00
ctrlr_discovery.c nvmf: Async event support for discovery log change 2020-11-11 00:53:57 +00:00
ctrlr.c nvmf: Fix race condition when adding IO qpair 2021-02-18 13:37:01 +00:00
fc_ls.c nvmf/fc: Handle out of order fused commands. 2021-01-14 16:18:25 +00:00
fc.c nvmf: Subsystem pauses only pause admin queues 2021-01-26 17:38:54 +00:00
Makefile so_ver: increase all major versions 2021-02-05 14:43:47 +00:00
nvmf_fc.h nvmf/fc: Add flag to differentiate LS queue and non LS queue. 2021-01-14 16:18:25 +00:00
nvmf_internal.h nvmf: Subsystem pauses only pause admin queues 2021-01-26 17:38:54 +00:00
nvmf_rpc.c nvmf: Subsystem pauses only pause admin queues 2021-01-26 17:38:54 +00:00
nvmf.c nvmf: Subsystem pauses only pause admin queues 2021-01-26 17:38:54 +00:00
rdma.c nvmf/rdma: Handle CQ resize for iWARP transport 2021-01-29 15:14:59 +00:00
spdk_nvmf.map nvmf: revert 'commit ae207216fb ("nvmf: remove request exec backdoor")' 2021-01-11 23:18:07 +00:00
subsystem.c nvmf: Subsystem pauses only pause admin queues 2021-01-26 17:38:54 +00:00
tcp.c Fix incorrect implementation of HPDA/CPDA in NVMe/TCP target code. 2021-02-16 08:40:14 +00:00
transport.c nvmf: introduce listener opts 2020-12-28 13:37:07 +00:00
transport.h nvmf: Allow nvmf_transport_qpair_fini to complete asynchronously. 2020-11-18 11:28:02 +00:00
vfio_user.c nvmf/vfio-user: use transport cdata_init callback for custom IDENTIFY 2021-02-10 08:27:56 +00:00