Limit the thread scheduler to put spdk_threads on lcores < last_lcore instead of lcores < lcore_count, which was probably the original intent. When the cpumask was not a contiguous cpu range, the thread scheduler failed to schedule any spdk_threads on the last cores. There was one hardcoded thread created for each reactor, but the scheduler could squash some of those into a single reactor. This broke the legacy lcore-based messages as those expect there to be at least one spdk_thread per lcore. Any spdk_poller_register() or spdk_get_io_channel() called from such a legacy message would fail an assertion, as spdk_get_thread() returned NULL. Fixes #743 Change-Id: I81a3f76d9c4788596c697df6ff51b264b99ce10b Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/450353 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Karol Latecki <karol.latecki@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> |
||
---|---|---|
.. | ||
rpc | ||
subsystems | ||
app.c | ||
json_config.c | ||
json_config.h | ||
Makefile | ||
reactor.c | ||
rpc.c | ||
subsystem.c |