From: Haomai Wang Date: Sun, 15 Jan 2017 16:07:08 +0000 (+0800) Subject: msg/async/Event: each Stack should use different global_centers X-Git-Tag: v12.0.0~17^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=24967ca2d798e36e1e06dded7e4ad359e5ac8966;p=ceph.git msg/async/Event: each Stack should use different global_centers Signed-off-by: Haomai Wang --- diff --git a/src/msg/async/Event.cc b/src/msg/async/Event.cc index 0ce65ed23b2b..ca48d38be878 100644 --- a/src/msg/async/Event.cc +++ b/src/msg/async/Event.cc @@ -99,11 +99,12 @@ ostream& EventCenter::_event_prefix(std::ostream *_dout) << " time_id=" << time_event_next_id << ")."; } -int EventCenter::init(int n, unsigned i, std::string &t) +int EventCenter::init(int n, unsigned i, const std::string &t) { // can't init multi times assert(nevent == 0); + type = t; idx = i; if (t == "dpdk") { @@ -189,7 +190,7 @@ void EventCenter::set_owner() ldout(cct, 2) << __func__ << " idx=" << idx << " owner=" << owner << dendl; if (!global_centers) { cct->lookup_or_create_singleton_object( - global_centers, "AsyncMessenger::EventCenter::global_center"); + global_centers, "AsyncMessenger::EventCenter::global_center::"+type); assert(global_centers); global_centers->centers[idx] = this; if (driver->need_wakeup()) { diff --git a/src/msg/async/Event.h b/src/msg/async/Event.h index f57a1cf49495..d1c7350cb0d1 100644 --- a/src/msg/async/Event.h +++ b/src/msg/async/Event.h @@ -152,6 +152,7 @@ class EventCenter { private: CephContext *cct; + std::string type; int nevent; // Used only to external event pthread_t owner; @@ -190,7 +191,7 @@ class EventCenter { ~EventCenter(); ostream& _event_prefix(std::ostream *_dout); - int init(int nevent, unsigned idx, std::string &t); + int init(int nevent, unsigned idx, const std::string &t); void set_owner(); pthread_t get_owner() const { return owner; } unsigned get_id() const { return idx; } diff --git a/src/test/msgr/test_async_driver.cc b/src/test/msgr/test_async_driver.cc index 87aac346eed4..7773db77c57d 100644 --- a/src/test/msgr/test_async_driver.cc +++ b/src/test/msgr/test_async_driver.cc @@ -256,7 +256,7 @@ class FakeEvent : public EventCallback { TEST(EventCenterTest, FileEventExpansion) { vector sds; EventCenter center(g_ceph_context); - center.init(100, 0); + center.init(100, 0, "posix"); center.set_owner(); EventCallbackRef e(new FakeEvent()); for (int i = 0; i < 300; i++) { @@ -277,7 +277,7 @@ class Worker : public Thread { public: EventCenter center; explicit Worker(CephContext *c, int idx): cct(c), done(false), center(c) { - center.init(100, idx); + center.init(100, idx, "posix"); } void stop() { done = true;