]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
PGLog: don't maintain log_keys_debug if the config is disabled
authorSamuel Just <sam.just@inktank.com>
Tue, 27 Aug 2013 14:27:26 +0000 (07:27 -0700)
committerSamuel Just <sam.just@inktank.com>
Fri, 6 Sep 2013 23:06:00 +0000 (16:06 -0700)
Fixes: #6040
Backport: Dumpling
Signed-off-by: Samuel Just <sam.just@inktank.com>
(cherry picked from commit 1c0d75db1075a58d893d30494a5d7280cb308899)

src/osd/PGLog.cc
src/osd/PGLog.h

index dac1f33fd91cde1e4b7e949dd43574bd3289e52f..0e18710ad18ee9631b8612ab2243e2eb4ae040be 100644 (file)
@@ -542,12 +542,13 @@ void PGLog::write_log(
             << ", dirty_from: " << dirty_from
             << ", dirty_divergent_priors: " << dirty_divergent_priors
             << dendl;
-    _write_log(t, log, log_oid, divergent_priors,
-              dirty_to,
-              dirty_from,
-              dirty_divergent_priors,
-              !touched_log,
-               &log_keys_debug);
+    _write_log(
+      t, log, log_oid, divergent_priors,
+      dirty_to,
+      dirty_from,
+      dirty_divergent_priors,
+      !touched_log,
+      (pg_log_debug ? &log_keys_debug : 0));
     undirty();
   } else {
     dout(10) << "log is not dirty" << dendl;
index 712c1e1c9179754120f39656fad9f6062078e4d4..b524c60c00a4799f36ec96e95d254e3e3a8f9aac 100644 (file)
@@ -150,6 +150,7 @@ struct PGLog {
 
 protected:
   //////////////////// data members ////////////////////
+  bool pg_log_debug;
 
   map<eversion_t, hobject_t> divergent_priors;
   pg_missing_t     missing;
@@ -205,10 +206,8 @@ protected:
         log_keys_debug->erase(i++));
   }
   void check() {
-    if (cct &&
-        !(cct->_conf->osd_debug_pg_log_writeout)) {
+    if (!pg_log_debug)
       return;
-    }
     assert(log.log.size() == log_keys_debug.size());
     for (list<pg_log_entry_t>::iterator i = log.log.begin();
         i != log.log.end();
@@ -226,6 +225,7 @@ protected:
   }
 public:
   PGLog(CephContext *cct = 0) :
+    pg_log_debug(!(cct && !(cct->_conf->osd_debug_pg_log_writeout))),
     touched_log(false), dirty_from(eversion_t::max()),
     dirty_divergent_priors(false), cct(cct) {}
 
@@ -381,8 +381,10 @@ public:
 
   bool read_log(ObjectStore *store, coll_t coll, hobject_t log_oid,
                const pg_info_t &info, ostringstream &oss) {
-    return read_log(store, coll, log_oid, info, divergent_priors,
-                   log, missing, oss, &log_keys_debug);
+    return read_log(
+      store, coll, log_oid, info, divergent_priors,
+      log, missing, oss,
+      (pg_log_debug ? &log_keys_debug : 0));
   }
 
   /// return true if the log should be rewritten