From: Joao Eduardo Luis Date: Tue, 26 Aug 2014 16:37:09 +0000 (+0100) Subject: osd/mds/monc: Adjust for LogClient/LogChannel usage X-Git-Tag: v0.86~167^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8a9831f9386889c3686e836b97f41a51bc37ce6b;p=ceph.git osd/mds/monc: Adjust for LogClient/LogChannel usage Signed-off-by: Joao Eduardo Luis --- diff --git a/src/mds/CDir.cc b/src/mds/CDir.cc index 58e6c74140fe..e5a1f5109c1f 100644 --- a/src/mds/CDir.cc +++ b/src/mds/CDir.cc @@ -1393,7 +1393,7 @@ void CDir::_tmap_fetch(const string& want_dn) void CDir::_tmap_fetched(bufferlist& bl, const string& want_dn, int r) { - LogClient &clog = cache->mds->clog; + LogChannelRef clog = cache->mds->clog; dout(10) << "_tmap_fetched " << bl.length() << " bytes for " << *this << " want_dn=" << want_dn << dendl; @@ -1412,7 +1412,7 @@ void CDir::_tmap_fetched(bufferlist& bl, const string& want_dn, int r) ::decode(omap, p); if (!p.end()) { - clog.warn() << "tmap buffer of dir " << dirfrag() << " has " + clog->warn() << "tmap buffer of dir " << dirfrag() << " has " << bl.length() - p.get_off() << " extra bytes\n"; } bl.clear(); @@ -1452,7 +1452,7 @@ void CDir::_omap_fetch(const string& want_dn) void CDir::_omap_fetched(bufferlist& hdrbl, map& omap, const string& want_dn, int r) { - LogClient &clog = cache->mds->clog; + LogChannelRef clog = cache->mds->clog; dout(10) << "_fetched header " << hdrbl.length() << " bytes " << omap.size() << " keys for " << *this << " want_dn=" << want_dn << dendl; @@ -1469,7 +1469,7 @@ void CDir::_omap_fetched(bufferlist& hdrbl, map& omap, } dout(0) << "_fetched missing object for " << *this << dendl; - clog.error() << "dir " << dirfrag() << " object missing on disk; some files may be lost\n"; + clog->error() << "dir " << dirfrag() << " object missing on disk; some files may be lost\n"; log_mark_dirty(); @@ -1488,7 +1488,7 @@ void CDir::_omap_fetched(bufferlist& hdrbl, map& omap, bufferlist::iterator p = hdrbl.begin(); ::decode(got_fnode, p); if (!p.end()) { - clog.warn() << "header buffer of dir " << dirfrag() << " has " + clog->warn() << "header buffer of dir " << dirfrag() << " has " << hdrbl.length() - p.get_off() << " extra bytes\n"; } } @@ -1668,7 +1668,7 @@ void CDir::_omap_fetched(bufferlist& hdrbl, map& omap, string dirpath, inopath; this->inode->make_path_string(dirpath); in->make_path_string(inopath); - clog.error() << "loaded dup inode " << inode_data.inode.ino + clog->error() << "loaded dup inode " << inode_data.inode.ino << " [" << first << "," << last << "] v" << inode_data.inode.version << " at " << dirpath << "/" << dname << ", but inode " << in->vino() << " v" << in->inode.version diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 182d830359c0..b37f77ce76ba 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -1797,7 +1797,7 @@ void CInode::_finish_frag_update(CDir *dir, MutationRef& mut) /* for more info on scatterlocks, see comments by Locker::scatter_writebehind */ void CInode::finish_scatter_gather_update(int type) { - LogClient &clog = mdcache->mds->clog; + LogChannelRef clog = mdcache->mds->clog; dout(10) << "finish_scatter_gather_update " << type << " on " << *this << dendl; assert(is_auth()); @@ -1838,7 +1838,7 @@ void CInode::finish_scatter_gather_update(int type) if (pf->fragstat.nfiles < 0 || pf->fragstat.nsubdirs < 0) { - clog.error() << "bad/negative dir size on " + clog->error() << "bad/negative dir size on " << dir->dirfrag() << " " << pf->fragstat << "\n"; assert(!"bad/negative fragstat" == g_conf->mds_verify_scatter); @@ -1872,7 +1872,7 @@ void CInode::finish_scatter_gather_update(int type) break; } if (all) { - clog.error() << "unmatched fragstat on " << ino() << ", inode has " + clog->error() << "unmatched fragstat on " << ino() << ", inode has " << pi->dirstat << ", dirfrags have " << dirstat << "\n"; assert(!"unmatched fragstat" == g_conf->mds_verify_scatter); // trust the dirfrags for now @@ -1884,7 +1884,7 @@ void CInode::finish_scatter_gather_update(int type) if (pi->dirstat.nfiles < 0 || pi->dirstat.nsubdirs < 0) { - clog.error() << "bad/negative fragstat on " << ino() + clog->error() << "bad/negative fragstat on " << ino() << ", inode has " << pi->dirstat << "\n"; assert(!"bad/negative fragstat" == g_conf->mds_verify_scatter); @@ -1967,7 +1967,7 @@ void CInode::finish_scatter_gather_update(int type) break; } if (all) { - clog.error() << "unmatched rstat on " << ino() << ", inode has " + clog->error() << "unmatched rstat on " << ino() << ", inode has " << pi->rstat << ", dirfrags have " << rstat << "\n"; assert(!"unmatched rstat" == g_conf->mds_verify_scatter); // trust the dirfrag for now diff --git a/src/mds/InoTable.cc b/src/mds/InoTable.cc index f0bf3bd576c5..a717cd9c3684 100644 --- a/src/mds/InoTable.cc +++ b/src/mds/InoTable.cc @@ -104,7 +104,7 @@ void InoTable::replay_alloc_id(inodeno_t id) free.erase(id); projected_free.erase(id); } else { - mds->clog.error() << "journal replay alloc " << id + mds->clog->error() << "journal replay alloc " << id << " not in free " << free << "\n"; } projected_version = ++version; @@ -118,7 +118,7 @@ void InoTable::replay_alloc_ids(interval_set& ids) free.subtract(ids); projected_free.subtract(ids); } else { - mds->clog.error() << "journal replay alloc " << ids << ", only " + mds->clog->error() << "journal replay alloc " << ids << ", only " << is << " is in free " << free << "\n"; free.subtract(is); projected_free.subtract(is); diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index cd734b31c4c5..79d1cf2547fb 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -2081,7 +2081,7 @@ void MDCache::predirty_journal_parents(MutationRef mut, EMetaBlob *blob, if (pi->dirstat.size() < 0) assert(!"negative dirstat size" == g_conf->mds_verify_scatter); if (pi->dirstat.size() != pf->fragstat.size()) { - mds->clog.error() << "unmatched fragstat size on single dirfrag " + mds->clog->error() << "unmatched fragstat size on single dirfrag " << parent->dirfrag() << ", inode has " << pi->dirstat << ", dirfrag has " << pf->fragstat << "\n"; @@ -2128,7 +2128,7 @@ void MDCache::predirty_journal_parents(MutationRef mut, EMetaBlob *blob, if (parent->get_frag() == frag_t()) { // i.e., we are the only frag if (pi->rstat.rbytes != pf->rstat.rbytes) { - mds->clog.error() << "unmatched rstat rbytes on single dirfrag " + mds->clog->error() << "unmatched rstat rbytes on single dirfrag " << parent->dirfrag() << ", inode has " << pi->rstat << ", dirfrag has " << pf->rstat << "\n"; @@ -5396,8 +5396,8 @@ void MDCache::export_remaining_imported_caps() cap_imports.clear(); if (warn_str.peek() != EOF) { - mds->clog.warn() << "failed to reconnect caps for missing inodes:" << "\n"; - mds->clog.warn(warn_str); + mds->clog->warn() << "failed to reconnect caps for missing inodes:" << "\n"; + mds->clog->warn(warn_str); } } @@ -5561,8 +5561,8 @@ void MDCache::open_snap_parents() ++q) warn_str << " client." << q->first << " snapid " << q->second << "\n"; } - mds->clog.warn() << "open_snap_parents has:" << "\n"; - mds->clog.warn(warn_str); + mds->clog->warn() << "open_snap_parents has:" << "\n"; + mds->clog->warn(warn_str); } assert(rejoin_waiters.empty()); assert(missing_snap_parents.empty()); diff --git a/src/mds/MDS.cc b/src/mds/MDS.cc index b84188eec3d1..f22dfab98c70 100644 --- a/src/mds/MDS.cc +++ b/src/mds/MDS.cc @@ -99,7 +99,7 @@ MDS::MDS(const std::string &n, Messenger *m, MonClient *mc) : standby_replaying(false), messenger(m), monc(mc), - clog(m->cct, messenger, &mc->monmap, LogClient::NO_FLAGS), + log_client(m->cct, messenger, &mc->monmap, LogClient::NO_FLAGS), op_tracker(cct, m->cct->_conf->mds_enable_op_tracker), finisher(cct), sessionmap(this), asok_hook(NULL) { @@ -109,6 +109,8 @@ MDS::MDS(const std::string &n, Messenger *m, MonClient *mc) : last_tid = 0; + clog = log_client.create_channel(); + monc->set_messenger(messenger); mdsmap = new MDSMap; @@ -583,7 +585,7 @@ int MDS::init(MDSMap::DaemonState wanted_state) finisher.start(); // tell monc about log_client so it will know about mon session resets - monc->set_log_client(&clog); + monc->set_log_client(&log_client); int r = monc->authenticate(); if (r < 0) { @@ -757,7 +759,7 @@ void MDS::check_ops_in_flight() for (vector::iterator i = warnings.begin(); i != warnings.end(); ++i) { - clog.warn() << *i; + clog->warn() << *i; } } return; @@ -961,17 +963,17 @@ void MDS::handle_command(MMonCommand *m) else if (m->cmd[0] == "cpu_profiler") { ostringstream ss; cpu_profiler_handle_command(m->cmd, ss); - clog.info() << ss.str(); + clog->info() << ss.str(); } else if (m->cmd[0] == "heap") { if (!ceph_using_tcmalloc()) - clog.info() << "tcmalloc not enabled, can't use heap profiler commands\n"; + clog->info() << "tcmalloc not enabled, can't use heap profiler commands\n"; else { ostringstream ss; vector cmdargs; cmdargs.insert(cmdargs.begin(), m->cmd.begin()+1, m->cmd.end()); ceph_heap_profiler_handle_command(cmdargs, ss); - clog.info() << ss.str(); + clog->info() << ss.str(); } } else dout(0) << "unrecognized command! " << m->cmd << dendl; m->put(); diff --git a/src/mds/MDS.h b/src/mds/MDS.h index e1b2c9447f7d..566face6fa0b 100644 --- a/src/mds/MDS.h +++ b/src/mds/MDS.h @@ -160,7 +160,8 @@ class MDS : public Dispatcher, public md_config_obs_t { MDSMap *mdsmap; Objecter *objecter; Filer *filer; // for reading/writing to/from osds - LogClient clog; + LogClient log_client; + LogChannelRef clog; // sub systems Server *server; diff --git a/src/mds/RecoveryQueue.cc b/src/mds/RecoveryQueue.cc index b5392c4c06ad..5968c5100e48 100644 --- a/src/mds/RecoveryQueue.cc +++ b/src/mds/RecoveryQueue.cc @@ -64,7 +64,7 @@ void RecoveryQueue::advance() // blech if (pi->client_ranges.size() && !pi->get_max_size()) { - mds->clog.warn() << "bad client_range " << pi->client_ranges + mds->clog->warn() << "bad client_range " << pi->client_ranges << " on ino " << pi->ino << "\n"; } diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 676014a0d236..28c0c46d4bfc 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -529,7 +529,7 @@ void Server::find_idle_sessions() utime_t age = now; age -= session->last_cap_renew; - mds->clog.info() << "closing stale session " << session->info.inst + mds->clog->info() << "closing stale session " << session->info.inst << " after " << age << "\n"; dout(10) << "autoclosing stale session " << session->info.inst << " last " << session->last_cap_renew << dendl; kill_session(session, NULL); @@ -633,7 +633,7 @@ void Server::handle_client_reconnect(MClientReconnect *m) if (!mds->is_reconnect()) { // XXX maybe in the future we can do better than this? dout(1) << " no longer in reconnect state, ignoring reconnect, sending close" << dendl; - mds->clog.info() << "denied reconnect attempt (mds is " + mds->clog->info() << "denied reconnect attempt (mds is " << ceph_mds_state_name(mds->get_state()) << ") from " << m->get_source_inst() << " after " << delay << " (allowed interval " << g_conf->mds_reconnect_timeout << ")\n"; @@ -644,7 +644,7 @@ void Server::handle_client_reconnect(MClientReconnect *m) if (session->is_closed()) { dout(1) << " session is closed, ignoring reconnect, sending close" << dendl; - mds->clog.info() << "denied reconnect attempt (mds is " + mds->clog->info() << "denied reconnect attempt (mds is " << ceph_mds_state_name(mds->get_state()) << ") from " << m->get_source_inst() << " (session is closed)\n"; m->get_connection()->send_message(new MClientSession(CEPH_SESSION_CLOSE)); @@ -654,7 +654,7 @@ void Server::handle_client_reconnect(MClientReconnect *m) // notify client of success with an OPEN m->get_connection()->send_message(new MClientSession(CEPH_SESSION_OPEN)); - mds->clog.debug() << "reconnect by " << session->info.inst << " after " << delay << "\n"; + mds->clog->debug() << "reconnect by " << session->info.inst << " after " << delay << "\n"; // snaprealms for (vector::iterator p = m->realms.begin(); @@ -1982,7 +1982,7 @@ CInode* Server::prepare_new_inode(MDRequestRef& mdr, CDir *dir, inodeno_t useino if (useino && useino != in->inode.ino) { dout(0) << "WARNING: client specified " << useino << " and i allocated " << in->inode.ino << dendl; - mds->clog.error() << mdr->client_request->get_source() + mds->clog->error() << mdr->client_request->get_source() << " specified ino " << useino << " but mds." << mds->whoami << " allocated " << in->inode.ino << "\n"; //assert(0); // just for now. diff --git a/src/mds/journal.cc b/src/mds/journal.cc index 55be6ab5dc0d..f1698b069281 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -1242,7 +1242,7 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg, MDSlaveUpdate *slaveup) ss << "EMetaBlob.replay FIXME had dentry linked to wrong inode " << *dn << " " << *dn->get_linkage()->get_inode() << " should be " << p->inode.ino; dout(0) << ss.str() << dendl; - mds->clog.warn(ss); + mds->clog->warn(ss); } dir->unlink_inode(dn); } @@ -1265,7 +1265,7 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg, MDSlaveUpdate *slaveup) ss << "EMetaBlob.replay FIXME had dentry linked to wrong inode " << *dn << " " << *dn->get_linkage()->get_inode() << " should be " << p->inode.ino; dout(0) << ss.str() << dendl; - mds->clog.warn(ss); + mds->clog->warn(ss); } dir->unlink_inode(dn); } @@ -1476,7 +1476,7 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg, MDSlaveUpdate *slaveup) // [repair bad inotable updates] if (inotablev > mds->inotable->get_version()) { - mds->clog.error() << "journal replay inotablev mismatch " + mds->clog->error() << "journal replay inotablev mismatch " << mds->inotable->get_version() << " -> " << inotablev << "\n"; mds->inotable->force_replay_version(inotablev); } @@ -1500,13 +1500,13 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg, MDSlaveUpdate *slaveup) if (used_preallocated_ino) { if (session->info.prealloc_inos.empty()) { // HRM: badness in the journal - mds->clog.warn() << " replayed op " << client_reqs << " on session for " + mds->clog->warn() << " replayed op " << client_reqs << " on session for " << client_name << " with empty prealloc_inos\n"; } else { inodeno_t next = session->next_ino(); inodeno_t i = session->take_ino(used_preallocated_ino); if (next != i) - mds->clog.warn() << " replayed op " << client_reqs << " used ino " << i + mds->clog->warn() << " replayed op " << client_reqs << " used ino " << i << " but session next is " << next << "\n"; assert(i == used_preallocated_ino); session->info.used_inos.clear(); @@ -1526,7 +1526,7 @@ void EMetaBlob::replay(MDS *mds, LogSegment *logseg, MDSlaveUpdate *slaveup) } assert(sessionmapv == mds->sessionmap.version); } else { - mds->clog.error() << "journal replay sessionmap v " << sessionmapv + mds->clog->error() << "journal replay sessionmap v " << sessionmapv << " -(1|2) > table " << mds->sessionmap.version << "\n"; assert(g_conf->mds_wipe_sessions); mds->sessionmap.wipe(); @@ -1627,7 +1627,7 @@ void ESession::replay(MDS *mds) dout(10) << " reset session " << session->info.inst << " (they reconnected)" << dendl; } } else { - mds->clog.error() << "replayed stray Session close event for " << client_inst + mds->clog->error() << "replayed stray Session close event for " << client_inst << " from time " << stamp << ", ignoring"; } } @@ -2488,20 +2488,20 @@ void ESubtreeMap::replay(MDS *mds) ++p) { CDir *dir = mds->mdcache->get_dirfrag(p->first); if (!dir) { - mds->clog.error() << " replayed ESubtreeMap at " << get_start_off() + mds->clog->error() << " replayed ESubtreeMap at " << get_start_off() << " subtree root " << p->first << " not in cache"; ++errors; continue; } if (!mds->mdcache->is_subtree(dir)) { - mds->clog.error() << " replayed ESubtreeMap at " << get_start_off() + mds->clog->error() << " replayed ESubtreeMap at " << get_start_off() << " subtree root " << p->first << " not a subtree in cache"; ++errors; continue; } if (dir->get_dir_auth().first != mds->whoami) { - mds->clog.error() << " replayed ESubtreeMap at " << get_start_off() + mds->clog->error() << " replayed ESubtreeMap at " << get_start_off() << " subtree root " << p->first << " is not mine in cache (it's " << dir->get_dir_auth() << ")"; ++errors; @@ -2516,13 +2516,13 @@ void ESubtreeMap::replay(MDS *mds) for (vector::iterator q = p->second.begin(); q != p->second.end(); ++q) { CDir *b = mds->mdcache->get_dirfrag(*q); if (!b) { - mds->clog.error() << " replayed ESubtreeMap at " << get_start_off() + mds->clog->error() << " replayed ESubtreeMap at " << get_start_off() << " subtree " << p->first << " bound " << *q << " not in cache"; ++errors; continue; } if (bounds.count(b) == 0) { - mds->clog.error() << " replayed ESubtreeMap at " << get_start_off() + mds->clog->error() << " replayed ESubtreeMap at " << get_start_off() << " subtree " << p->first << " bound " << *q << " not a bound in cache"; ++errors; continue; @@ -2530,20 +2530,20 @@ void ESubtreeMap::replay(MDS *mds) bounds.erase(b); } for (set::iterator q = bounds.begin(); q != bounds.end(); ++q) { - mds->clog.error() << " replayed ESubtreeMap at " << get_start_off() + mds->clog->error() << " replayed ESubtreeMap at " << get_start_off() << " subtree " << p->first << " has extra bound in cache " << (*q)->dirfrag(); ++errors; } if (ambiguous_subtrees.count(p->first)) { if (!mds->mdcache->have_ambiguous_import(p->first)) { - mds->clog.error() << " replayed ESubtreeMap at " << get_start_off() + mds->clog->error() << " replayed ESubtreeMap at " << get_start_off() << " subtree " << p->first << " is ambiguous but is not in our cache"; ++errors; } } else { if (mds->mdcache->have_ambiguous_import(p->first)) { - mds->clog.error() << " replayed ESubtreeMap at " << get_start_off() + mds->clog->error() << " replayed ESubtreeMap at " << get_start_off() << " subtree " << p->first << " is not ambiguous but is in our cache"; ++errors; } @@ -2557,7 +2557,7 @@ void ESubtreeMap::replay(MDS *mds) if (dir->get_dir_auth().first != mds->whoami) continue; if (subtrees.count(dir->dirfrag()) == 0) { - mds->clog.error() << " replayed ESubtreeMap at " << get_start_off() + mds->clog->error() << " replayed ESubtreeMap at " << get_start_off() << " does not include cache subtree " << dir->dirfrag(); ++errors; } diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index 9b4507ac9375..19415917b08f 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -177,7 +177,8 @@ CompatSet OSD::get_osd_compat_set() { OSDService::OSDService(OSD *osd) : osd(osd), cct(osd->cct), - whoami(osd->whoami), store(osd->store), clog(osd->clog), + whoami(osd->whoami), store(osd->store), + log_client(osd->log_client), clog(osd->clog), pg_recovery_stats(osd->pg_recovery_stats), infos_oid(OSD::make_infos_oid()), cluster_messenger(osd->cluster_messenger), @@ -609,9 +610,9 @@ void OSDService::check_nearfull_warning(const osd_stat_t &osd_stat) } last_msg = now; if (cur_state == FULL) - clog.error() << "OSD full dropping all updates " << (int)(ratio * 100) << "% full"; + clog->error() << "OSD full dropping all updates " << (int)(ratio * 100) << "% full"; else - clog.warn() << "OSD near full (" << (int)(ratio * 100) << "%)"; + clog->warn() << "OSD near full (" << (int)(ratio * 100) << "%)"; } bool OSDService::check_failsafe_full() @@ -1255,7 +1256,7 @@ void OSDService::handle_misdirected_op(PG *pg, OpRequestRef op) } dout(7) << *pg << " misdirected op in " << m->get_map_epoch() << dendl; - clog.warn() << m->get_source_inst() << " misdirected " << m->get_reqid() + clog->warn() << m->get_source_inst() << " misdirected " << m->get_reqid() << " pg " << m->get_pg() << " to osd." << whoami << " not " << pg->acting @@ -1632,7 +1633,8 @@ OSD::OSD(CephContext *cct_, ObjectStore *store_, logger(NULL), recoverystate_perf(NULL), store(store_), - clog(cct, client_messenger, &mc->monmap, LogClient::NO_FLAGS), + log_client(cct, client_messenger, &mc->monmap, LogClient::NO_FLAGS), + clog(log_client.create_channel()), whoami(id), dev_path(dev), journal_path(jdev), dispatch_running(false), @@ -2006,7 +2008,7 @@ int OSD::init() goto out; // tell monc about log_client so it will know about mon session resets - monc->set_log_client(&clog); + monc->set_log_client(&log_client); osd_tp.start(); osd_op_tp.start(); @@ -4040,7 +4042,7 @@ void OSD::check_ops_in_flight() for (vector::iterator i = warnings.begin(); i != warnings.end(); ++i) { - clog.warn() << *i; + clog->warn() << *i; } } return; @@ -5309,7 +5311,7 @@ void OSD::do_command(Connection *con, ceph_tid_t tid, vector& cmd, buffe rs = ss.str(); odata.append(ds); dout(0) << "do_command r=" << r << " " << rs << dendl; - clog.info() << rs << "\n"; + clog->info() << rs << "\n"; if (con) { MCommandReply *reply = new MCommandReply(r, rs); reply->set_tid(tid); @@ -6302,25 +6304,25 @@ void OSD::handle_osd_map(MOSDMap *m) if (service.is_preparing_to_stop() || service.is_stopping()) { service.got_stop_ack(); } else { - clog.warn() << "map e" << osdmap->get_epoch() + clog->warn() << "map e" << osdmap->get_epoch() << " wrongly marked me down"; } } else if (!osdmap->get_addr(whoami).probably_equals(client_messenger->get_myaddr())) - clog.error() << "map e" << osdmap->get_epoch() + clog->error() << "map e" << osdmap->get_epoch() << " had wrong client addr (" << osdmap->get_addr(whoami) << " != my " << client_messenger->get_myaddr() << ")"; else if (!osdmap->get_cluster_addr(whoami).probably_equals(cluster_messenger->get_myaddr())) - clog.error() << "map e" << osdmap->get_epoch() + clog->error() << "map e" << osdmap->get_epoch() << " had wrong cluster addr (" << osdmap->get_cluster_addr(whoami) << " != my " << cluster_messenger->get_myaddr() << ")"; else if (!osdmap->get_hb_back_addr(whoami).probably_equals(hb_back_server_messenger->get_myaddr())) - clog.error() << "map e" << osdmap->get_epoch() + clog->error() << "map e" << osdmap->get_epoch() << " had wrong hb back addr (" << osdmap->get_hb_back_addr(whoami) << " != my " << hb_back_server_messenger->get_myaddr() << ")"; else if (osdmap->get_hb_front_addr(whoami) != entity_addr_t() && !osdmap->get_hb_front_addr(whoami).probably_equals(hb_front_server_messenger->get_myaddr())) - clog.error() << "map e" << osdmap->get_epoch() + clog->error() << "map e" << osdmap->get_epoch() << " had wrong hb front addr (" << osdmap->get_hb_front_addr(whoami) << " != my " << hb_front_server_messenger->get_myaddr() << ")"; @@ -8089,7 +8091,7 @@ void OSD::handle_op(OpRequestRef& op, OSDMapRef& osdmap) } if (!send_map->have_pg_pool(pgid.pool())) { dout(7) << "dropping request; pool did not exist" << dendl; - clog.warn() << m->get_source_inst() << " invalid " << m->get_reqid() + clog->warn() << m->get_source_inst() << " invalid " << m->get_reqid() << " pg " << m->get_pg() << " to osd." << whoami << " in e" << osdmap->get_epoch() @@ -8099,7 +8101,7 @@ void OSD::handle_op(OpRequestRef& op, OSDMapRef& osdmap) return; } else if (send_map->get_pg_acting_role(pgid.pgid, whoami) < 0) { dout(7) << "we are invalid target" << dendl; - clog.warn() << m->get_source_inst() << " misdirected " << m->get_reqid() + clog->warn() << m->get_source_inst() << " misdirected " << m->get_reqid() << " pg " << m->get_pg() << " to osd." << whoami << " in e" << osdmap->get_epoch() @@ -8516,12 +8518,12 @@ void OSD::check_config() { // some sanity checks if (g_conf->osd_map_cache_size <= g_conf->osd_map_max_advance + 2) { - clog.warn() << "osd_map_cache_size (" << g_conf->osd_map_cache_size << ")" + clog->warn() << "osd_map_cache_size (" << g_conf->osd_map_cache_size << ")" << " is not > osd_map_max_advance (" << g_conf->osd_map_max_advance << ")"; } if (g_conf->osd_map_cache_size <= (int)g_conf->osd_pg_epoch_persisted_max_stale + 2) { - clog.warn() << "osd_map_cache_size (" << g_conf->osd_map_cache_size << ")" + clog->warn() << "osd_map_cache_size (" << g_conf->osd_map_cache_size << ")" << " is not > osd_pg_epoch_persisted_max_stale (" << g_conf->osd_pg_epoch_persisted_max_stale << ")"; } diff --git a/src/osd/OSD.h b/src/osd/OSD.h index 7d73f07f40e6..8ad18e3b0963 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -312,7 +312,8 @@ public: SharedPtrRegistry deleting_pgs; const int whoami; ObjectStore *&store; - LogClient &clog; + LogClient &log_client; + LogChannelRef clog; PGRecoveryStats &pg_recovery_stats; hobject_t infos_oid; private: @@ -924,7 +925,8 @@ protected: PerfCounters *recoverystate_perf; ObjectStore *store; - LogClient clog; + LogClient log_client; + LogChannelRef clog; int whoami; std::string dev_path, journal_path; diff --git a/src/osd/PG.cc b/src/osd/PG.cc index 902335ac6e72..f1b499e9f476 100644 --- a/src/osd/PG.cc +++ b/src/osd/PG.cc @@ -1539,7 +1539,7 @@ void PG::activate(ObjectStore::Transaction& t, * behind. */ // backfill - osd->clog.info() << info.pgid << " restarting backfill on osd." << peer + osd->clog->info() << info.pgid << " restarting backfill on osd." << peer << " from (" << pi.log_tail << "," << pi.last_update << "] " << pi.last_backfill << " to " << info.last_update; @@ -2886,7 +2886,7 @@ void PG::read_state(ObjectStore *store, bufferlist &bl) assert(!r); } if (oss.str().length()) - osd->clog.error() << oss; + osd->clog->error() << oss; // log any weirdness log_weirdness(); @@ -2895,12 +2895,12 @@ void PG::read_state(ObjectStore *store, bufferlist &bl) void PG::log_weirdness() { if (pg_log.get_tail() != info.log_tail) - osd->clog.error() << info.pgid + osd->clog->error() << info.pgid << " info mismatch, log.tail " << pg_log.get_tail() << " != info.log_tail " << info.log_tail << "\n"; if (pg_log.get_head() != info.last_update) - osd->clog.error() << info.pgid + osd->clog->error() << info.pgid << " info mismatch, log.head " << pg_log.get_head() << " != info.last_update " << info.last_update << "\n"; @@ -2908,7 +2908,7 @@ void PG::log_weirdness() if (!pg_log.get_log().empty()) { // sloppy check if ((pg_log.get_log().log.begin()->version <= pg_log.get_tail())) - osd->clog.error() << info.pgid + osd->clog->error() << info.pgid << " log bound mismatch, info (" << pg_log.get_tail() << "," << pg_log.get_head() << "]" << " actual [" @@ -2918,7 +2918,7 @@ void PG::log_weirdness() } if (pg_log.get_log().caller_ops.size() > pg_log.get_log().log.size()) { - osd->clog.error() << info.pgid + osd->clog->error() << info.pgid << " caller_ops.size " << pg_log.get_log().caller_ops.size() << " > log size " << pg_log.get_log().log.size() << "\n"; @@ -3352,7 +3352,7 @@ void PG::_scan_rollback_obs( i != rollback_obs.end(); ++i) { if (i->generation < trimmed_to.version) { - osd->clog.error() << "osd." << osd->whoami + osd->clog->error() << "osd." << osd->whoami << " pg " << info.pgid << " found obsolete rollback obj " << *i << " generation < trimmed_to " @@ -3412,7 +3412,7 @@ void PG::_scan_snaps(ScrubMap &smap) << dendl; assert(0); } - osd->clog.error() << "osd." << osd->whoami + osd->clog->error() << "osd." << osd->whoami << " found snap mapper error on pg " << info.pgid << " oid " << hoid << " snaps in mapper: " @@ -3420,7 +3420,7 @@ void PG::_scan_snaps(ScrubMap &smap) << oi_snaps << "...repaired"; } else { - osd->clog.error() << "osd." << osd->whoami + osd->clog->error() << "osd." << osd->whoami << " found snap mapper error on pg " << info.pgid << " oid " << hoid << " snaps missing in mapper" @@ -4083,7 +4083,7 @@ void PG::scrub_compare_maps() dout(2) << ss.str() << dendl; if (!authoritative.empty() || !scrubber.inconsistent_snapcolls.empty()) { - osd->clog.error(ss); + osd->clog->error(ss); } for (map::iterator i = authoritative.begin(); @@ -4133,7 +4133,7 @@ void PG::scrub_process_inconsistent() << scrubber.missing.size() << " missing, " << scrubber.inconsistent.size() << " inconsistent objects\n"; dout(2) << ss.str() << dendl; - osd->clog.error(ss); + osd->clog->error(ss); if (repair) { state_clear(PG_STATE_CLEAN); for (map >::iterator i = @@ -4229,9 +4229,9 @@ void PG::scrub_finish() oss << ", " << scrubber.fixed << " fixed"; oss << "\n"; if (total_errors) - osd->clog.error(oss); + osd->clog->error(oss); else - osd->clog.info(oss); + osd->clog->info(oss); } // finish up @@ -4398,7 +4398,7 @@ void PG::fulfill_log( dout(10) << " sending info+missing+log since " << query.since << dendl; if (query.since != eversion_t() && query.since < pg_log.get_tail()) { - osd->clog.error() << info.pgid << " got broken pg_query_t::LOG since " << query.since + osd->clog->error() << info.pgid << " got broken pg_query_t::LOG since " << query.since << " when my log.tail is " << pg_log.get_tail() << ", sending full log instead\n"; mlog->log = pg_log.get_log(); // primary should not have requested this!! @@ -6260,11 +6260,11 @@ boost::statechart::result PG::RecoveryState::Active::react(const ActMap&) if (unfound > 0 && pg->all_unfound_are_queried_or_lost(pg->get_osdmap())) { if (pg->cct->_conf->osd_auto_mark_unfound_lost) { - pg->osd->clog.error() << pg->info.pgid << " has " << unfound + pg->osd->clog->error() << pg->info.pgid << " has " << unfound << " objects unfound and apparently lost, would automatically marking lost but NOT IMPLEMENTED\n"; //pg->mark_all_unfound_lost(*context< RecoveryMachine >().get_cur_transaction()); } else - pg->osd->clog.error() << pg->info.pgid << " has " << unfound << " objects unfound and apparently lost\n"; + pg->osd->clog->error() << pg->info.pgid << " has " << unfound << " objects unfound and apparently lost\n"; } if (!pg->snap_trimq.empty() && diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index 6caee253d55e..250bdc1bb91b 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -1381,7 +1381,7 @@ void ReplicatedPG::do_op(OpRequestRef& op) if (m->get_object_locator() != oloc) { dout(10) << " provided locator " << m->get_object_locator() << " != object's " << obc->obs.oi.soid << dendl; - osd->clog.warn() << "bad locator " << m->get_object_locator() + osd->clog->warn() << "bad locator " << m->get_object_locator() << " on object " << oloc << " op " << *m << "\n"; } @@ -3244,7 +3244,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) r = pgbackend->objects_read_sync( soid, last, len, &t); if (!t.is_zero()) { - osd->clog.error() << coll << " " << soid << " sparse-read found data in hole " + osd->clog->error() << coll << " " << soid << " sparse-read found data in hole " << last << "~" << len << "\n"; } } @@ -3272,7 +3272,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) r = pgbackend->objects_read_sync( soid, last, len, &t); if (!t.is_zero()) { - osd->clog.error() << coll << " " << soid << " sparse-read found data in hole " + osd->clog->error() << coll << " " << soid << " sparse-read found data in hole " << last << "~" << len << "\n"; } } @@ -3675,7 +3675,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) map >::const_iterator coi; coi = ssc->snapset.clone_overlap.find(ci.cloneid); if (coi == ssc->snapset.clone_overlap.end()) { - osd->clog.error() << "osd." << osd->whoami << ": inconsistent clone_overlap found for oid " + osd->clog->error() << "osd." << osd->whoami << ": inconsistent clone_overlap found for oid " << soid << " clone " << *clone_iter; result = -EINVAL; break; @@ -3690,7 +3690,7 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) map::const_iterator si; si = ssc->snapset.clone_size.find(ci.cloneid); if (si == ssc->snapset.clone_size.end()) { - osd->clog.error() << "osd." << osd->whoami << ": inconsistent clone_size found for oid " + osd->clog->error() << "osd." << osd->whoami << ": inconsistent clone_size found for oid " << soid << " clone " << *clone_iter; result = -EINVAL; break; @@ -9909,7 +9909,7 @@ bool ReplicatedPG::start_recovery_ops( if (missing.num_missing() > 0) { // this shouldn't happen! - osd->clog.error() << info.pgid << " recovery ending with " << missing.num_missing() + osd->clog->error() << info.pgid << " recovery ending with " << missing.num_missing() << ": " << missing.missing << "\n"; return work_in_progress; } @@ -9917,7 +9917,7 @@ bool ReplicatedPG::start_recovery_ops( if (needs_recovery()) { // this shouldn't happen! // We already checked num_missing() so we must have missing replicas - osd->clog.error() << info.pgid << " recovery ending with missing replicas\n"; + osd->clog->error() << info.pgid << " recovery ending with missing replicas\n"; return work_in_progress; } @@ -10145,9 +10145,9 @@ int ReplicatedPG::prep_object_replica_pushes( } } if (uhoh) - osd->clog.error() << info.pgid << " missing primary copy of " << soid << ", unfound\n"; + osd->clog->error() << info.pgid << " missing primary copy of " << soid << ", unfound\n"; else - osd->clog.error() << info.pgid << " missing primary copy of " << soid + osd->clog->error() << info.pgid << " missing primary copy of " << soid << ", will try copies on " << missing_loc.get_locations(soid) << "\n"; return 0; @@ -11247,7 +11247,7 @@ void ReplicatedPG::agent_setup() } if (info.stats.stats_invalid) { - osd->clog.warn() << "pg " << info.pgid << " has invalid (post-split) stats; must scrub before tier agent can activate"; + osd->clog->warn() << "pg " << info.pgid << " has invalid (post-split) stats; must scrub before tier agent can activate"; } agent_choose_mode(); @@ -11918,7 +11918,7 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) if (soid.snap == CEPH_SNAPDIR || soid.snap == CEPH_NOSNAP) { if (p->second.attrs.count(SS_ATTR) == 0) { - osd->clog.error() << mode << " " << info.pgid << " " << soid + osd->clog->error() << mode << " " << info.pgid << " " << soid << " no '" << SS_ATTR << "' attr"; ++scrubber.shallow_errors; continue; @@ -11931,7 +11931,7 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) // did we finish the last oid? if (head != hobject_t() && !pool.info.allow_incomplete_clones()) { - osd->clog.error() << mode << " " << info.pgid << " " << head + osd->clog->error() << mode << " " << info.pgid << " " << head << " missing clones"; ++scrubber.shallow_errors; } @@ -11949,7 +11949,7 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) // basic checks. if (p->second.attrs.count(OI_ATTR) == 0) { - osd->clog.error() << mode << " " << info.pgid << " " << soid + osd->clog->error() << mode << " " << info.pgid << " " << soid << " no '" << OI_ATTR << "' attr"; ++scrubber.shallow_errors; continue; @@ -11959,7 +11959,7 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) object_info_t oi(bv); if (pgbackend->be_get_ondisk_size(oi.size) != p->second.size) { - osd->clog.error() << mode << " " << info.pgid << " " << soid + osd->clog->error() << mode << " " << info.pgid << " " << soid << " on disk size (" << p->second.size << ") does not match object info size (" << oi.size << ") adjusted for ondisk to (" @@ -12011,19 +12011,19 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) } } if (!next_clone.is_min() && next_clone != soid) { - osd->clog.error() << mode << " " << info.pgid << " " << soid + osd->clog->error() << mode << " " << info.pgid << " " << soid << " expected clone " << next_clone; ++scrubber.shallow_errors; } if (soid.snap == CEPH_NOSNAP || soid.snap == CEPH_SNAPDIR) { if (soid.snap == CEPH_NOSNAP && !snapset.head_exists) { - osd->clog.error() << mode << " " << info.pgid << " " << soid + osd->clog->error() << mode << " " << info.pgid << " " << soid << " snapset.head_exists=false, but head exists"; ++scrubber.shallow_errors; } if (soid.snap == CEPH_SNAPDIR && snapset.head_exists) { - osd->clog.error() << mode << " " << info.pgid << " " << soid + osd->clog->error() << mode << " " << info.pgid << " " << soid << " snapset.head_exists=true, but snapdir exists"; ++scrubber.shallow_errors; } @@ -12038,7 +12038,7 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) stat.num_object_clones++; if (head == hobject_t()) { - osd->clog.error() << mode << " " << info.pgid << " " << soid + osd->clog->error() << mode << " " << info.pgid << " " << soid << " found clone without head"; ++scrubber.shallow_errors; continue; @@ -12049,7 +12049,7 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) } if (oi.size != snapset.clone_size[*curclone]) { - osd->clog.error() << mode << " " << info.pgid << " " << soid + osd->clog->error() << mode << " " << info.pgid << " " << soid << " size " << oi.size << " != clone_size " << snapset.clone_size[*curclone]; ++scrubber.shallow_errors; @@ -12080,7 +12080,7 @@ void ReplicatedPG::_scrub(ScrubMap& scrubmap) if (!next_clone.is_min() && !pool.info.allow_incomplete_clones()) { - osd->clog.error() << mode << " " << info.pgid + osd->clog->error() << mode << " " << info.pgid << " expected clone " << next_clone; ++scrubber.shallow_errors; } @@ -12126,7 +12126,7 @@ void ReplicatedPG::_scrub_finish() !info.stats.hitset_stats_invalid) || scrub_cstat.sum.num_whiteouts != info.stats.stats.sum.num_whiteouts || scrub_cstat.sum.num_bytes != info.stats.stats.sum.num_bytes) { - osd->clog.error() << info.pgid << " " << mode + osd->clog->error() << info.pgid << " " << mode << " stat mismatch, got " << scrub_cstat.sum.num_objects << "/" << info.stats.stats.sum.num_objects << " objects, " << scrub_cstat.sum.num_object_clones << "/" << info.stats.stats.sum.num_object_clones << " clones, " diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index c9399b499256..918e2d335f11 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -417,7 +417,7 @@ public: ceph_tid_t get_tid() { return osd->get_tid(); } - LogClientTemp clog_error() { return osd->clog.error(); } + LogClientTemp clog_error() { return osd->clog->error(); } /* * Capture all object state associated with an in-progress read or write.