if spdk_thread_poll() calls spdk_thread_create() to create SPDK thread dynamically, it will acquire nvmf_reactor->mutex and will cause deadlock because the queue nvmf_reactor->threads is accessed by any POSIX thread by holding nvmf_reactor->mutex. If any non-owner POSIX thread manipulate nvmf_reactor->threads by holding nvmf_reactor->threads, like general priority based scheduler, running SPDK threads by FIFO will be better. Change nvmf_reactor_run() to dequeue a SPDK thread from the head, run it, and then enqueue it to the tail. Release nvmf_reactor->mutex while spdk_thread_poll() is executed. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: I9b4040cc4d995beaf4a1f9ed8260bb1254d7d7fb Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/2537 Community-CI: Mellanox Build Bot Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> |
||
---|---|---|
.. | ||
nvmf | ||
Makefile |