From 290730ee3e61a4eb680b8e38cee9cb153f83298e Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 1 Feb 2012 21:07:40 -0800 Subject: [PATCH] objecter: track whether initialized; add asserts init() should be called when not initialized; shutdown() should not be called unless initialized. No handle_* method should be called unless initialized. Signed-off-by: Sage Weil --- src/osdc/Objecter.cc | 14 ++++++++++++++ src/osdc/Objecter.h | 2 ++ 2 files changed, 16 insertions(+) diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index eb70aea2aa177..34d459f4837a2 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -124,6 +124,7 @@ enum { void Objecter::init() { assert(client_lock.is_locked()); + assert(!initialized); if (!logger) { PerfCountersBuilder pcb(cct, "objecter", l_osdc_first, l_osdc_last); @@ -211,10 +212,16 @@ void Objecter::init() schedule_tick(); maybe_request_map(); + + initialized = true; } void Objecter::shutdown() { + assert(client_lock.is_locked()); + assert(initialized); + initialized = false; + map::iterator p; while (!osd_sessions.empty()) { p = osd_sessions.begin(); @@ -366,6 +373,7 @@ void Objecter::dispatch(Message *m) void Objecter::handle_osd_map(MOSDMap *m) { assert(client_lock.is_locked()); + assert(initialized); assert(osdmap); if (m->fsid != monc->get_fsid()) { @@ -746,6 +754,7 @@ void Objecter::tick() { ldout(cct, 10) << "tick" << dendl; assert(client_lock.is_locked()); + assert(initialized); // we are only called by C_Tick assert(tick_event); @@ -822,6 +831,7 @@ void Objecter::resend_mon_ops() tid_t Objecter::op_submit(Op *op, OSDSession *s) { assert(client_lock.is_locked()); + assert(initialized); assert(op->ops.size() == op->out_bl.size()); assert(op->ops.size() == op->out_rval.size()); @@ -1135,6 +1145,7 @@ void Objecter::throttle_op(Op *op, int op_budget) void Objecter::handle_osd_op_reply(MOSDOpReply *m) { assert(client_lock.is_locked()); + assert(initialized); ldout(cct, 10) << "in handle_osd_op_reply" << dendl; // get pio @@ -1566,6 +1577,7 @@ void Objecter::pool_op_submit(PoolOp *op) void Objecter::handle_pool_op_reply(MPoolOpReply *m) { assert(client_lock.is_locked()); + assert(initialized); ldout(cct, 10) << "handle_pool_op_reply " << *m << dendl; tid_t tid = m->get_tid(); if (pool_ops.count(tid)) { @@ -1628,6 +1640,7 @@ void Objecter::poolstat_submit(PoolStatOp *op) void Objecter::handle_get_pool_stats_reply(MGetPoolStatsReply *m) { assert(client_lock.is_locked()); + assert(initialized); ldout(cct, 10) << "handle_get_pool_stats_reply " << *m << dendl; tid_t tid = m->get_tid(); @@ -1679,6 +1692,7 @@ void Objecter::fs_stats_submit(StatfsOp *op) void Objecter::handle_fs_stats_reply(MStatfsReply *m) { assert(client_lock.is_locked()); + assert(initialized); ldout(cct, 10) << "handle_fs_stats_reply " << *m << dendl; tid_t tid = m->get_tid(); diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index d8ebd8e07cb8e..92177ab813a65 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -394,6 +394,7 @@ class Objecter { OSDMap *osdmap; CephContext *cct; + bool initialized; private: tid_t last_tid; @@ -776,6 +777,7 @@ public: Objecter(CephContext *cct_, Messenger *m, MonClient *mc, OSDMap *om, Mutex& l, SafeTimer& t) : messenger(m), monc(mc), osdmap(om), cct(cct_), + initialized(false), last_tid(0), client_inc(-1), max_linger_id(0), num_unacked(0), num_uncommitted(0), global_op_flags(0), -- 2.39.5