From: YongSheng Zhang Date: Wed, 5 Dec 2018 05:48:14 +0000 (+0800) Subject: async/dpdk: when enable dpdk, multiple message queue defect X-Git-Tag: v14.1.0~664^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e058bdc5958ba98dc20fbeddf72e2927767d6c97;p=ceph.git async/dpdk: when enable dpdk, multiple message queue defect when enable dpdk, if set ms_async_op_threads value greater than 1 at "ceph.conf" file, then osd can not work. Signed-off-by: zhangyongsheng --- diff --git a/src/msg/async/dpdk/DPDKStack.cc b/src/msg/async/dpdk/DPDKStack.cc index 2a293991cb21..3101ae57ac23 100644 --- a/src/msg/async/dpdk/DPDKStack.cc +++ b/src/msg/async/dpdk/DPDKStack.cc @@ -258,13 +258,14 @@ void DPDKStack::spawn_worker(unsigned i, std::function &&func) // cores ceph_assert(rte_lcore_count() >= i + 1); unsigned core_id; + int j = i; RTE_LCORE_FOREACH_SLAVE(core_id) { if (i-- == 0) { break; } } dpdk::eal::execute_on_master([&]() { - r = rte_eal_remote_launch(dpdk_thread_adaptor, static_cast(&funcs[i]), core_id); + r = rte_eal_remote_launch(dpdk_thread_adaptor, static_cast(&funcs[j]), core_id); if (r < 0) { lderr(cct) << __func__ << " remote launch failed, r=" << r << dendl; ceph_abort();