]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/mds/monc: Adjust for LogClient/LogChannel usage
authorJoao Eduardo Luis <joao.luis@inktank.com>
Tue, 26 Aug 2014 16:37:09 +0000 (17:37 +0100)
committerJoao Eduardo Luis <joao.luis@inktank.com>
Wed, 27 Aug 2014 18:12:05 +0000 (19:12 +0100)
Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
14 files changed:
src/mds/CDir.cc
src/mds/CInode.cc
src/mds/InoTable.cc
src/mds/MDCache.cc
src/mds/MDS.cc
src/mds/MDS.h
src/mds/RecoveryQueue.cc
src/mds/Server.cc
src/mds/journal.cc
src/osd/OSD.cc
src/osd/OSD.h
src/osd/PG.cc
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h

index 58e6c74140fea12dd43914f5790da03e82153b36..e5a1f5109c1f3b8d5b1b15880d52dff9587ae72c 100644 (file)
@@ -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<string, bufferlist>& 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<string, bufferlist>& 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<string, bufferlist>& 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<string, bufferlist>& 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
index 182d830359c07492a9c115b708f7ffbdeab93088..b37f77ce76ba098b4318fc4107cdfcdd355595c3 100644 (file)
@@ -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
index f0bf3bd576c5b1d91ea8cb6d7d609ca274e73857..a717cd9c3684d6fd4ea648b858a93a145f1d1ae9 100644 (file)
@@ -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<inodeno_t>& 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);
index cd734b31c4c591ac38351cd5ffc9fa827d0ddc20..79d1cf2547fbb0b482c49d6f7517dbe63a54a46f 100644 (file)
@@ -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());
index b84188eec3d1fb8856b315a9772785a68c60d211..f22dfab98c70e4daa89364e875c9c37e0fa5fa12 100644 (file)
@@ -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<string>::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<std::string> 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();
index e1b2c9447f7df63a7a444f948857948fb9d7140e..566face6fa0be08eea6929855fb690778f5be67d 100644 (file)
@@ -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;
index b5392c4c06adbe79102fb9132dcdcbbd562c5d40..5968c5100e480a3646d700fec6b6179a5594cd3c 100644 (file)
@@ -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";
     }
 
index 676014a0d2362a0966c4c8b9252292e639b9eb2b..28c0c46d4bfc78d1def45fdaa0efd527cbe780dc 100644 (file)
@@ -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<ceph_mds_snaprealm_reconnect>::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.
index 55be6ab5dc0dfb2d653e88ac1dd96836d3bcd03c..f1698b06928187d36a008bbab3d48e980e4bb850 100644 (file)
@@ -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<dirfrag_t>::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<CDir*>::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;
       }
index 9b4507ac937552f55a22921192e8b6e1a86c9273..19415917b08f46e39ab1f0a358718331dafc6cc2 100644 (file)
@@ -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<string>::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<string>& 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 << ")";
   }
index 7d73f07f40e697989994e377df2f810f72ef2ab2..8ad18e3b09631490ca356c6567f29060c84c3618 100644 (file)
@@ -312,7 +312,8 @@ public:
   SharedPtrRegistry<spg_t, DeletingState> 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;
index 902335ac6e72fbd6c5ab3c1db466d07e5755c9b9..f1b499e9f476ebf48d1c584011b9db9fda31f2a3 100644 (file)
@@ -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<hobject_t, pg_shard_t>::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<hobject_t, pair<ScrubMap::object, pg_shard_t> >::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() &&
index 6caee253d55e92f0bc0bff061bc17560ef26f5d1..250bdc1bb91bcf1a9e28db7bab80141488642fb5 100644 (file)
@@ -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<OSDOp>& 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<OSDOp>& 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<OSDOp>& ops)
           map<snapid_t, interval_set<uint64_t> >::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<OSDOp>& ops)
           map<snapid_t, uint64_t>::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, "
index c9399b499256cfd6fe6f44e06d78b83153c36642..918e2d335f115dc3f815d431af2aa216ba5dfabe 100644 (file)
@@ -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.