class SharedDriverData {
unsigned id;
+ uint32_t core_id;
std::string sn;
spdk_nvme_ctrlr *ctrlr;
spdk_nvme_ns *ns;
bool aio_stop = false;
void _aio_thread();
void _aio_start() {
- int r = rte_eal_remote_launch(dpdk_thread_adaptor, static_cast<void*>(&run_func), id);
+ int r = rte_eal_remote_launch(dpdk_thread_adaptor, static_cast<void*>(&run_func),
+ core_id);
assert(r == 0);
}
void _aio_stop() {
aio_stop = true;
queue_cond.Signal();
}
- int r = rte_eal_wait_lcore(id);
+ int r = rte_eal_wait_lcore(core_id);
assert(r == 0);
aio_stop = false;
}
std::atomic_ulong completed_op_seq, queue_op_seq;
PerfCounters *logger = nullptr;
- SharedDriverData(unsigned i, const std::string &sn_tag,
+ SharedDriverData(unsigned i, uint32_t core, const std::string &sn_tag,
spdk_nvme_ctrlr *c, spdk_nvme_ns *ns)
: id(i),
+ core_id(core),
sn(sn_tag),
ctrlr(c),
ns(ns),
// only support one device per osd now!
assert(shared_driver_datas.empty());
// index 0 is occured by master thread
- shared_driver_datas.push_back(new SharedDriverData(shared_driver_datas.size()+1, sn_tag, c, ns));
+ shared_driver_datas.push_back(new SharedDriverData(shared_driver_datas.size()+1, rte_get_next_lcore(-1, 0, 0), sn_tag, c, ns));
*driver = shared_driver_datas.back();
}
};