]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rewrite debug macros, infrastructure
authorSage Weil <sage@newdream.net>
Wed, 5 Nov 2008 22:09:04 +0000 (14:09 -0800)
committerSage Weil <sage@newdream.net>
Wed, 5 Nov 2008 22:32:37 +0000 (14:32 -0800)
67 files changed:
src/Makefile.am
src/client/Client.cc
src/client/SyntheticClient.cc
src/cmon.cc
src/common/Mutex.cc
src/common/Timer.cc
src/common/debug.cc [new file with mode: 0644]
src/common/debug.h [new file with mode: 0644]
src/common/lockdep.cc
src/config.cc
src/config.h
src/cosd.cc
src/ebofs/Allocator.cc
src/ebofs/BlockDevice.cc
src/ebofs/BufferCache.cc
src/ebofs/Ebofs.cc
src/ebofs/Table.h
src/ebofs/nodes.h
src/include/frag.h
src/include/lru.h
src/mds/AnchorClient.cc
src/mds/AnchorServer.cc
src/mds/CDentry.cc
src/mds/CDir.cc
src/mds/CInode.cc
src/mds/CacheObject.cc
src/mds/InoTable.cc
src/mds/Locker.cc
src/mds/MDBalancer.cc
src/mds/MDCache.cc
src/mds/MDLog.cc
src/mds/MDS.cc
src/mds/MDSTable.cc
src/mds/MDSTableClient.cc
src/mds/MDSTableServer.cc
src/mds/Migrator.cc
src/mds/Server.cc
src/mds/SessionMap.cc
src/mds/SnapServer.cc
src/mds/journal.cc
src/mds/snap.cc
src/mon/ClientMonitor.cc
src/mon/Elector.cc
src/mon/MDSMonitor.cc
src/mon/MonClient.cc
src/mon/Monitor.cc
src/mon/MonitorStore.cc
src/mon/OSDMonitor.cc
src/mon/PGMonitor.cc
src/mon/Paxos.cc
src/mon/Paxos.h
src/mon/PaxosService.cc
src/msg/Message.cc
src/msg/SimpleMessenger.cc
src/msg/SimpleMessenger.h
src/os/FileJournal.cc
src/os/FileStore.cc
src/os/JournalingObjectStore.cc
src/osd/OSD.cc
src/osd/OSDMap.cc
src/osd/PG.cc
src/osd/RAID4PG.cc
src/osd/ReplicatedPG.cc
src/osdc/Filer.cc
src/osdc/Journaler.cc
src/osdc/ObjectCacher.cc
src/osdc/Objecter.cc

index dbb11742514c720bcf71f6c6d75b553b777e0521..7bf73e505476d071ee3a77d91cdae788dec57bab 100644 (file)
@@ -172,6 +172,7 @@ libcommon_a_SOURCES = \
        common/Finisher.cc \
        common/sctp_crc32.c\
        common/assert.cc \
+       common/debug.cc \
        mon/MonMap.cc \
        mon/MonClient.cc \
        osd/OSDMap.cc \
index 6b72b0c6e6b54afae983a7d9df2a2a8ac8d7adf5..9b165a1cd2fce55e9464a96bd317a832bc5fa16d 100644 (file)
@@ -66,7 +66,9 @@ using namespace std;
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l <= g_conf.debug_client) *_dout << dbeginl << g_clock.now() << " client" << whoami /*<< "." << pthread_self() */ << " "
+#define DOUT_SUBSYS client
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "client" << whoami << " "
 
 #define  tout       if (g_conf.client_trace) traceout
 
index bb139faafe219d1b49255ad507d9128681fff962..e2084e0b3f0b126d9e8110e1129cd87c56850955 100644 (file)
@@ -37,8 +37,9 @@ using namespace std;
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l<=g_conf.debug_client) *_dout << dbeginl << g_clock.now() << " synthetic" << (this->whoami >= 0 ? this->whoami:client->get_nodeid()) << " "
-#define  derr(l)    if (l<=g_conf.debug || l<=g_conf.debug_client) *_derr << dbeginl << g_clock.now() << " synthetic" << (this->whoami >= 0 ? this->whoami:client->get_nodeid()) << " "
+#define DOUT_SUBSYS client
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "client" << whoami << " "
 
 // traces
 //void trace_include(SyntheticClient *syn, Client *cl, string& prefix);
index d8f1a42ed2e409c3673744c48df3c2c068f4fd9e..fed5bfbed64fde984864e4cd61614bed8789fc68 100644 (file)
@@ -100,7 +100,7 @@ int main(int argc, const char **argv)
   if (err < 0)
     return 1;
 
-  create_courtesy_output_symlink("mon", whoami);
+  _dout_create_courtesy_output_symlink("mon", whoami);
   
   // start monitor
   Messenger *m = rank.register_entity(entity_name_t::MON(whoami));
index dd60d07defd41039434b62df0507d02de3509d04..13d3ee8dff8eb22af7a189ee6f9b4c103614a269 100644 (file)
@@ -13,6 +13,8 @@ int g_lockdep = 0;
 
 #include "config.h"
 
+#undef dout
+#undef derr
 #define  dout(l)    if (l<=g_conf.debug_lockdep) *_dout << g_clock.now() << " " << pthread_self() << " lockdep: "
 #define  derr(l)    if (l<=g_conf.debug_lockdep) *_derr << g_clock.now() << " " << pthread_self() << " lockdep: "
 
index d63687d997ea14b6c53975b71e857ecd36abc2fe..e3ae660439196f093d3980be9004b69d23c51ac4 100644 (file)
@@ -21,8 +21,9 @@
 #include "config.h"
 #include "include/Context.h"
 
-#define dout(x)  if (x <= g_conf.debug_timer) *_dout << dbeginl << g_clock.now() << " TIMER "
-#define derr(x)  if (x <= g_conf.debug_timer) *_derr << dbeginl << g_clock.now() << " TIMER "
+#define DOUT_SUBSYS timer
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << " TIMER "
 
 #define DBL 10
 
diff --git a/src/common/debug.cc b/src/common/debug.cc
new file mode 100644 (file)
index 0000000..424b384
--- /dev/null
@@ -0,0 +1,101 @@
+
+#include "include/types.h"
+#include "config.h"
+#include "debug.h"
+#include "Mutex.h"
+#include "Clock.h"
+
+#include <fstream>
+#include <iostream>
+using namespace std;
+
+// debug output
+Mutex _dout_lock("_dout_lock", false, false /* no lockdep */);  
+ostream *_dout = &std::cout;
+ostream *_derr = &std::cerr;
+char _dout_file[100] = {0};
+char _dout_dir[1000] = {0};
+char _dout_symlink_path[1000] = {0};
+bool _dout_is_open = false;
+bool _dout_need_open = true;
+
+void _dout_open_log()
+{
+  char fn[80];
+
+  // logging enabled?
+  if (!(g_conf.dout_dir && g_conf.file_logs)) {
+    _dout_need_open = false;
+    return;
+  }
+
+  // calculate log dir, filename, etc.
+  if (!_dout_file[0]) {
+    char hostname[80];
+    gethostname(hostname, 79);
+    
+    if (g_conf.dout_dir[0] == '/') 
+      strcpy(_dout_dir, g_conf.dout_dir);
+    else {
+      getcwd(_dout_dir, 100);
+      strcat(_dout_dir, "/");
+      strcat(_dout_dir, g_conf.dout_dir);
+    }
+    sprintf(_dout_file, "%s.%d", hostname, getpid());
+  }
+
+  if (_dout && _dout_is_open)
+    delete _dout;
+
+  sprintf(fn, "%s/%s", _dout_dir, _dout_file);
+  std::ofstream *out = new std::ofstream(fn, ios::trunc|ios::out);
+  if (!out->is_open()) {
+    std::cerr << "error opening output file " << fn << std::endl;
+    delete out;
+    _dout = &std::cout;
+  } else {
+    _dout_need_open = false;
+    _dout_is_open = true;
+    _dout = out;
+    *_dout << g_clock.now() << " --- opened log " << fn << " ---" << std::endl;
+  }
+}
+
+int _dout_rename_output_file()  // after calling daemon()
+{
+  if (g_conf.dout_dir && g_conf.file_logs) {
+    char oldfn[100];
+    char newfn[100];
+    char hostname[80];
+    gethostname(hostname, 79);
+    
+    sprintf(oldfn, "%s/%s", _dout_dir, _dout_file);
+    sprintf(newfn, "%s/%s.%d", _dout_dir, hostname, getpid());
+    dout(0) << "---- renamed log " << oldfn << " -> " << newfn << " ----" << dendl;
+    ::rename(oldfn, newfn);
+    sprintf(_dout_file, "%s.%d", hostname, getpid());
+
+    if (_dout_symlink_path[0]) {
+      ::unlink(_dout_symlink_path);
+      ::symlink(_dout_file, _dout_symlink_path);
+    }
+  }
+  return 0;
+}
+
+int _dout_create_courtesy_output_symlink(const char *type, int n)
+{
+  if (g_conf.dout_dir && g_conf.file_logs) {
+    if (_dout_need_open)
+      _dout_open_log();
+
+    sprintf(_dout_symlink_path, "%s/%s%d", _dout_dir, type, n);
+    ::unlink(_dout_symlink_path);
+    ::symlink(_dout_file, _dout_symlink_path);
+    dout(0) << "---- creating symlink " << _dout_symlink_path
+           << " -> " << _dout_file << " ----" << dendl;
+  }
+  return 0;
+}
+
+
diff --git a/src/common/debug.h b/src/common/debug.h
new file mode 100644 (file)
index 0000000..ae857ce
--- /dev/null
@@ -0,0 +1,86 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
+// vim: ts=8 sw=2 smarttab
+
+#ifndef __CEPH_DEBUG_H
+#define __CEPH_DEBUG_H
+
+#include "include/assert.h"
+#include "Mutex.h"
+#include "Clock.h"
+
+#include <ostream>
+using std::ostream;
+
+// the streams
+extern ostream *_dout;
+extern ostream *_derr;
+
+extern Mutex _dout_lock;
+
+extern bool _dout_need_open;
+extern char _dout_file[100];
+extern char _dout_dir[1000];
+extern char _dout_symlink_path[1000];
+extern bool _dout_is_open;
+
+extern void _dout_open_log();
+extern int _dout_rename_output_file();  // after calling daemon()
+extern int _dout_create_courtesy_output_symlink(const char *type, int n);
+
+
+static inline void _dout_begin_line() {
+  _dout_lock.Lock();
+  if (_dout_need_open)
+    _dout_open_log();
+  *_dout << g_clock.now() << " ";
+}
+static void _dout_begin_line_static() {
+  _dout_begin_line();
+}
+
+static inline void _dout_end_line() {
+  _dout_lock.Unlock();
+}
+
+struct _dbeginl_t { _dbeginl_t(int) {} };
+static const _dbeginl_t dbeginl = 0;
+inline ostream& operator<<(ostream& out, _dbeginl_t) {
+  _dout_begin_line();
+  return out;
+}
+
+struct _dbeginlstatic_t { _dbeginlstatic_t(int) {} };
+static const _dbeginlstatic_t dbeginlstatic = 0;
+inline ostream& operator<<(ostream& out, _dbeginlstatic_t) {
+  _dout_begin_line_static();
+  return out;
+}
+
+// intentionally conflict with endl
+class _bad_endl_use_dendl_t { public: _bad_endl_use_dendl_t(int) {} };
+static const _bad_endl_use_dendl_t endl = 0;
+inline ostream& operator<<(ostream& out, _bad_endl_use_dendl_t) {
+  assert(0 && "you are using the wrong endl.. use std::endl or dendl");
+  return out;
+}
+
+
+// generic macros
+#define generic_dout(x) do { if ((x) <= g_conf.debug) { *_dout << dbeginl
+#define generic_derr(x) do { if ((x) <= g_conf.debug) { *_derr << dbeginl
+
+#define pdout(x,p) do { if ((x) <= (p)) { *_dout << dbeginl
+
+#define debug_DOUT_SUBSYS debug
+#define dout_prefix *_dout << dbeginlstatic
+#define DOUT_CONDVAR(x) g_conf.debug_ ## x
+#define XDOUT_CONDVAR(x) DOUT_CONDVAR(x)
+#define DOUT_COND(l) l <= XDOUT_CONDVAR(DOUT_SUBSYS)
+
+#define dout(l) do { if (DOUT_COND(l)) { dout_prefix
+#define derr(l) do { if (DOUT_COND(l)) { dout_prefix
+
+#define dendl std::endl; _dout_end_line(); } } while (0)
+
+
+#endif
index db9069968920f9927746d071dde08475968b23dd..2c5f017421180a26cc7666e25c2288405bbb43b3 100644 (file)
@@ -11,8 +11,8 @@ int g_lockdep = 0;
 
 #include "config.h"
 
+#undef dout
 #define  dout(l)    if (l<=g_conf.debug_lockdep) *_dout << g_clock.now() << " " << pthread_self() << " lockdep: "
-#define  derr(l)    if (l<=g_conf.debug_lockdep) *_derr << g_clock.now() << " " << pthread_self() << " lockdep: "
 
 
 pthread_mutex_t lockdep_mutex = PTHREAD_MUTEX_INITIALIZER;
index 8200672d8555644e1cf38c1be68941ff35a4dac0..d3c1f113f08232532056ac07dbbe8719df0c59ee 100644 (file)
@@ -16,6 +16,8 @@
 #include "config.h"
 #include "include/types.h"
 
+#include "common/Clock.h"
+
 #include <fstream>
 #include <stdlib.h>
 #include <errno.h>
@@ -80,16 +82,6 @@ int buffer::list::write_file(const char *fn)
 
 
 
-// debug output
-Mutex _dout_lock("_dout_lock", false, false /* no lockdep */);  
-ostream *_dout = &std::cout;
-ostream *_derr = &std::cerr;
-char _dout_file[100] = {0};
-char _dout_dir[1000] = {0};
-char _dout_symlink_path[1000] = {0};
-bool _dout_is_open;
-bool _dout_need_open;
-
 // page size crap, see page.h
 int _get_bits_of(int v) {
   int n = 0;
@@ -1169,87 +1161,13 @@ void parse_config_options(std::vector<const char*>& args, bool open)
     }
   }
 
-  // redirect dout?
-  /*
-  if (g_conf.dout_dir) {
-    struct stat st;
-    int r = ::stat(g_conf.dout_dir, &st);
-    if (r != 0)
-      g_conf.dout_dir = 0;
-  }
-  */
-  if (g_conf.dout_dir && g_conf.file_logs && open) {
-    char hostname[80];
-    gethostname(hostname, 79);
-
-    if (g_conf.dout_dir[0] == '/') 
-      strcpy(_dout_dir, g_conf.dout_dir);
-    else {
-      getcwd(_dout_dir, 100);
-      strcat(_dout_dir, "/");
-      strcat(_dout_dir, g_conf.dout_dir);
-    }
-    sprintf(_dout_file, "%s.%d", hostname, getpid());
-
-    _dout_is_open = false;
-    _dout_need_open = true;
-
-    open_dout_file();
-  }
-
+  // open log file?
+  if (open)
+    _dout_open_log();
+  
   signal(SIGHUP, sighup_handler);
 
   args = nargs;
 }
 
-void open_dout_file()
-{
-  char fn[80];
-  if (_dout && _dout_is_open) {
-    delete _dout;
-  }
-
-  sprintf(fn, "%s/%s", _dout_dir, _dout_file);
-  std::ofstream *out = new std::ofstream(fn, ios::trunc|ios::out);
-  if (!out->is_open()) {
-    std::cerr << "error opening output file " << fn << std::endl;
-    delete out;
-  } else {
-    _dout_need_open = false;
-    _dout_is_open = true;
-    _dout = out;
-  }
-}
-
-int rename_output_file()  // after calling daemon()
-{
-  if (g_conf.dout_dir) {
-    char oldfn[100];
-    char newfn[100];
-    char hostname[80];
-    gethostname(hostname, 79);
-    
-    sprintf(oldfn, "%s/%s", _dout_dir, _dout_file);
-    sprintf(newfn, "%s/%s.%d", _dout_dir, hostname, getpid());
-    ::rename(oldfn, newfn);
-    sprintf(_dout_file, "%s.%d", hostname, getpid());
-
-    if (_dout_symlink_path[0]) {
-      ::unlink(_dout_symlink_path);
-      ::symlink(_dout_file, _dout_symlink_path);
-    }
-  }
-  return 0;
-}
-
-int create_courtesy_output_symlink(const char *type, int n)
-{
-  if (g_conf.dout_dir) {
-    sprintf(_dout_symlink_path, "%s/%s%d", _dout_dir, type, n);
-    ::unlink(_dout_symlink_path);
-    ::symlink(_dout_file, _dout_symlink_path);
-  }
-  return 0;
-}
-
 
index 6da73885caed22086cff4a68fbf63d52abf47dd3..04175d507d43c5787b44e822692ef42315afaad2 100644 (file)
@@ -348,6 +348,8 @@ extern md_config_t g_conf;
 extern md_config_t g_debug_after_conf;     
 
 
+
+
 /**
  * command line / environment argument parsing
  */
@@ -362,60 +364,10 @@ void parse_config_option_string(string& s);
 
 extern bool parse_ip_port(const char *s, entity_addr_t& addr);
 
-int create_courtesy_output_symlink(const char *type, int n);
-int rename_output_file();
 
 
-/**
- * for cleaner output, bracket each line with
- * dbeginl (in the dout macro) and dendl (in place of endl).
- */
-extern Mutex _dout_lock;
-struct _dbeginl_t { _dbeginl_t(int) {} };
-struct _dendl_t { _dendl_t(int) {} };
-static const _dbeginl_t dbeginl = 0;
-static const _dendl_t dendl = 0;
-
-// intentionally conflict with endl
-class _bad_endl_use_dendl_t { public: _bad_endl_use_dendl_t(int) {} };
-static const _bad_endl_use_dendl_t endl = 0;
-
-// the streams
-extern ostream *_dout;
-extern ostream *_derr;
-extern bool _dout_need_open;
-extern bool _dout_is_open;
-
-extern void open_dout_file();
-
-inline ostream& operator<<(ostream& out, _dbeginl_t) {
-  _dout_lock.Lock();
-
-  if (_dout_need_open) {
-    if (_dout && _dout_is_open) {
-      delete _dout;
-    }
-    open_dout_file();
-  }
-
-  return out;
-}
-inline ostream& operator<<(ostream& out, _dendl_t) {
-  out << std::endl;
-  _dout_lock.Unlock();
-  return out;
-}
-inline ostream& operator<<(ostream& out, _bad_endl_use_dendl_t) {
-  assert(0 && "you are using the wrong endl.. use std::endl or dendl");
-  return out;
-}
-
-
-// generic macros
-#define generic_dout(x) if ((x) <= g_conf.debug) *_dout << dbeginl
-#define generic_derr(x) if ((x) <= g_conf.debug) *_derr << dbeginl
-
-#define pdout(x,p) if ((x) <= (p)) *_dout << dbeginl
 
 
+#include "common/debug.h"
+
 #endif
index 6aeaeebe90e3fb786e4c6c032bb0701d2460de11..cbca0e61f21601ea3f4a57542c40de267c79a0f1 100644 (file)
@@ -105,7 +105,7 @@ int main(int argc, const char **argv)
     }
   }
 
-  create_courtesy_output_symlink("osd", whoami);
+  _dout_create_courtesy_output_symlink("osd", whoami);
 
   // start up network
   rank.bind();
index 028380539962d635a30bcafb157470cedee70cf3..da3b8d506141f7fb4fe0b845235a0df206ebc21c 100644 (file)
@@ -19,8 +19,9 @@
 #include "Ebofs.h"
 
 
-#undef dout
-#define dout(x) if (x <= g_conf.debug_ebofs) *_dout << dbeginl << g_clock.now() << " ebofs(" << fs->dev.get_device_name() << ").allocator."
+#define DOUT_SUBSYS ebofs
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "ebofs(" << fs->dev.get_device_name() << ").allocator."
 
 
 void Allocator::dump_freelist()
index f54bb929a9c00dc63aef23e325fb4a63df28fc7d..0472d91ad8cb4b21e1c6c6ca31a0f62cd09a8219 100644 (file)
@@ -39,6 +39,7 @@
 #endif
 #endif
 
+#define DOUT_SUBSYS bdev
 
 
 /*******************************************
@@ -63,8 +64,8 @@ inline ostream& operator<<(ostream& out, BlockDevice::biovec &bio)
  * ElevatorQueue
  */
 
-#define dout(x) if (x <= g_conf.debug_bdev) *_dout << dbeginl << g_clock.now() << " bdev(" << dev << ").elevatorq."
-#define derr(x) if (x <= g_conf.debug_bdev) *_derr << dbeginl << g_clock.now() << " bdev(" << dev << ").elevatorq."
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "bdev(" << dev << ").elevatorq."
 
 
 int BlockDevice::ElevatorQueue::dequeue_io(list<biovec*>& biols, 
@@ -212,10 +213,8 @@ int BlockDevice::ElevatorQueue::dequeue_io(list<biovec*>& biols,
 /*******************************************
  * BarrierQueue
  */
-#undef dout
-#define dout(x) if (x <= g_conf.debug_bdev) *_dout << dbeginl << g_clock.now() << " bdev(" << dev << ").barrierq."
-#undef derr
-#define derr(x) if (x <= g_conf.debug_bdev) *_derr << dbeginl << g_clock.now() << " bdev(" << dev << ").barrierq."
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "bdev(" << dev << ").barrierq."
 
 void BlockDevice::BarrierQueue::barrier()
 {
@@ -263,12 +262,8 @@ int BlockDevice::BarrierQueue::dequeue_io(list<biovec*>& biols,
  * BlockDevice
  */
 
-#undef dout
-#define dout(x) if (x <= g_conf.debug_bdev) *_dout << dbeginl << g_clock.now() << " bdev(" << dev << ")."
-#undef derr
-#define derr(x) if (x <= g_conf.debug_bdev) *_derr << dbeginl << g_clock.now() << " bdev(" << dev << ")."
-
-
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "bdev(" << dev << ")."
 
 block_t BlockDevice::get_num_blocks() 
 {
index 3064c5879be64727e79ecc008de756d6dfb489b0..d909b5e0ee5995ded2bc0410b6ecaa31f822bc8f 100644 (file)
@@ -17,6 +17,7 @@
 #include "BufferCache.h"
 #include "Onode.h"
 
+#define DOUT_SUBSYS ebofs
 
 void do_apply_partial(bufferlist& bl, map<__u64, bufferlist>& pm) 
 {
@@ -36,11 +37,8 @@ void do_apply_partial(bufferlist& bl, map<__u64, bufferlist>& pm)
 
 /*********** BufferHead **************/
 
-
-#undef dout
-#undef derr
-#define dout(x)  if (x <= g_conf.debug_ebofs) *_dout << dbeginl << g_clock.now() << " ebofs." << *this << "."
-#define derr(x)  if (x <= g_conf.debug_ebofs) *_derr << dbeginl << g_clock.now() << " ebofs." << *this << "."
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "ebofs." << *this << "."
 
 
 void BufferHead::add_partial(__u64 off, bufferlist& p) 
@@ -125,13 +123,8 @@ void BufferHead::apply_partial()
 
 /************ ObjectCache **************/
 
-
-#undef dout
-#undef derr
-#define dout(x)  if (x <= g_conf.debug_ebofs) *_dout << dbeginl << g_clock.now() << " ebofs.oc."
-#define derr(x)  if (x <= g_conf.debug_ebofs) *_derr << dbeginl << g_clock.now() << " ebofs.oc."
-
-
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "ebofs.oc."
 
 void ObjectCache::rx_finish(ioh_t ioh, block_t start, block_t length, bufferlist& bl)
 {
@@ -989,9 +982,8 @@ void ObjectCache::scrub_csums()
 
 /************** BufferCache ***************/
 
-#undef dout
-#define dout(x)  if (x <= g_conf.debug_ebofs) *_dout << dbeginl << g_clock.now() << " ebofs.bc."
-
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "ebofs.bc."
 
 
 BufferHead *BufferCache::split(BufferHead *orig, block_t after) 
index b26e6937a756140437bdf54fa20fff0c6b526c83..c39a129dd9c89aefa922096e58cc4777492c5f15 100644 (file)
@@ -29,8 +29,9 @@
 
 // *******************
 
-#define dout(x) if (x <= g_conf.debug_ebofs) *_dout << dbeginl << g_clock.now() << " ebofs(" << dev.get_device_name() << ")."
-#define derr(x) if (x <= g_conf.debug_ebofs) *_derr << dbeginl << g_clock.now() << " ebofs(" << dev.get_device_name() << ")."
+#define DOUT_SUBSYS ebofs
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "ebofs(" << dev.get_device_name() << ")."
 
 
 char *nice_blocks(block_t b) 
index 41c36635d21532db5a9d898520183dc68a90f1c6..949843d523bbe399ea895a25f9d91b2e170d45bc 100644 (file)
@@ -21,7 +21,7 @@
 
 /** table **/
 
-#define dbtout if (25 <= g_conf.debug_ebofs) *_dout << dbeginl << "ebofs.table(" << this << ")."
+#define dbtout do { if (25 <= g_conf.debug_ebofs) { *_dout << dbeginl << "ebofs.table(" << this << ")."
 
 
 template<class K, class V>
index 4d7310194a0a95682c0d8d1fdd5fc881cacab113..9e6aabe33e2d470b28652ad3bf2b274b217ba0e3 100644 (file)
@@ -45,7 +45,7 @@
 */
 
 #undef debofs
-#define debofs(x) if (x <= g_conf.debug_ebofs) *_dout << dbeginl << "ebofs.nodepool."
+#define debofs(x) do { if (x <= g_conf.debug_ebofs) { *_dout << dbeginl << "ebofs.nodepool."
 
 
 class Node {
index c62c55f67c8b77f6e2a387823acd8f80a291075e..07d7fa1dd4b4ab962f32ff9a1583a25e5c4382e9 100644 (file)
@@ -464,7 +464,7 @@ public:
       q.pop_front();
       // newline + indent?
       if (t.bits()) {
-       out << dendl;
+       out << std::endl;
        for (unsigned i=0; i<t.bits(); i++) out << ' ';
       }
       int nb = get_split(t);
index a8bebe9bac183bfe9d61329f4cb80b7f2a0a06af..c52aac2d0b1d9d682db77bbbbd4e7174ea4513ab 100644 (file)
@@ -313,7 +313,7 @@ class LRU {
 
 
   void lru_status() {
-    generic_dout(10) << "lru: " << lru_num << " items, " << lru_top.get_length() << " top, " << lru_bot.get_length() << " bot, " << lru_pintail.get_length() << " pintail" << dendl;
+    //generic_dout(10) << "lru: " << lru_num << " items, " << lru_top.get_length() << " top, " << lru_bot.get_length() << " bot, " << lru_pintail.get_length() << " pintail" << dendl;
   }
 
 };
index ceb412bb9a3668302cc1d37b92b706e19fa07255..be795c2e050f5875d0111c8f502b17e57fbc760c 100644 (file)
@@ -22,8 +22,9 @@
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " " << mds->messenger->get_myname() << ".anchorclient "
-#define derr(x)  if (x <= g_conf.debug_mds) *_derr << dbeginl << g_clock.now() << " " << mds->messenger->get_myname() << ".anchorclient "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".anchorclient "
 
 
 
index 52eaf65222d4e6311629f4f8c1f038955729a9bd..74ceb22b2664d065ff759c4aca0b63428a919d89 100644 (file)
@@ -17,8 +17,9 @@
 #include "msg/Messenger.h"
 #include "messages/MMDSTableRequest.h"
 
-#define dout(x)  if (x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " " << mds->messenger->get_myname() << ".anchorserver "
-#define derr(x)  if (x <= g_conf.debug_mds) *_derr << dbeginl << g_clock.now() << " " << mds->messenger->get_myname() << ".anchorserver "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".anchorserver "
 
 // table
 
index 8d8f85f383fd743ee201af5a7b3719b18103e748..aecd9c82a9eb43deb26a671e037811e50885b0c2 100644 (file)
@@ -25,9 +25,9 @@
 
 #include "messages/MLock.h"
 
-
-#define dout(x)  if (x <= g_conf.debug || x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << dir->cache->mds->get_nodeid() << ".cache.den(" << dir->dirfrag() << " " << name << ") "
-
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << dir->cache->mds->get_nodeid() << ".cache.den(" << dir->dirfrag() << " " << name << ") "
 
 
 ostream& CDentry::print_db_line_prefix(ostream& out) 
index 2c699d5fb173f392fdf59bad8c360cb2612312a1..e0f17f7c4b8733065225100f7df81d68f54ddd6a 100644 (file)
@@ -33,8 +33,9 @@
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug || x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << cache->mds->get_nodeid() << ".cache.dir(" << this->dirfrag() << ") "
-
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << cache->mds->get_nodeid() << ".cache.dir(" << this->dirfrag() << ") "
 
 
 
index 19e4c1a4c0460acba572d90870671763e527bd1b..011bd864948ef13082f02f2d63f540ef3809c180 100644 (file)
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug || x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << mdcache->mds->get_nodeid() << ".cache.ino(" << inode.ino << ") "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mdcache->mds->get_nodeid() << ".cache.ino(" << inode.ino << ") "
+
 
 
 //int cinode_pins[CINODE_NUM_PINS];  // counts
index d0b89c7e7a9913aae9489f98de1f61e2d6b2bc5c..7e867760ec76acac4240f0b24c9da9618e3a781f 100644 (file)
 #include "Locker.h"
 
 #include "config.h"
-#define  dout(l)    if (l<=g_conf.debug || l <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " " << this << " "
-#define  derr(l)    if (l<=g_conf.debug || l <= g_conf.debug_mds) *_derr << dbeginl << g_clock.now() << " " << this << " "
+
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << *this << " "
 
 ClientLease *MDSCacheObject::add_client_lease(int c, int mask) 
 {
index a0eb62fd1628a3316e74b47669914d4068b23584..2b46199f0f33a5af29b2e13d067887ca9013fbb7 100644 (file)
@@ -19,7 +19,9 @@
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".inotable: "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << "." << table_name << ": "
 
 void InoTable::init_inode()
 {
index d5e7c6b838ef3b874e8ae6388ca98842f12b1566..48c945b2043d4d9b9e500f406cda8cd0837cb4b7 100644 (file)
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".locker "
 
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix _prefix(mds)
+static ostream& _prefix(MDS *mds) {
+  return *_dout << dbeginl << " mds" << mds->get_nodeid() << ".locker ";
+}
 
 
 void Locker::dispatch(Message *m)
index 9e70506fbf4bb41ea149a27ed1897afd0324c863..f9f93b465326f0222fe71a9e80bd15896b3017eb 100644 (file)
@@ -33,7 +33,11 @@ using std::vector;
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug_mds || l<=g_conf.debug_mds_balancer) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".bal "
+#define DOUT_SUBSYS mds
+#undef DOUT_COND
+#define DOUT_COND(l) l<=g_conf.debug_mds || l <= g_conf.debug_mds_balancer
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".bal "
 
 #define MIN_LOAD    50   //  ??
 #define MIN_REEXPORT 5  // will automatically reexport
index e55fe97ca95fb3c05a75c76d83a68f8f9163dfe3..b4cf76d7fb6552a2fb3e0cf61ed38d73826a2be0 100644 (file)
@@ -87,8 +87,12 @@ using namespace std;
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".cache "
-
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix _prefix(mds)
+static ostream& _prefix(MDS *mds) {
+  return *_dout << dbeginl << " mds" << mds->get_nodeid() << ".cache ";
+}
 
 
 MDCache::MDCache(MDS *m)
index 66d8339aed8605ef6a48567015649a6ccb6a9264..c04522ba2f8f174fcf1584ed8d6cbaa9a927af13 100644 (file)
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug_mds || l <= g_conf.debug_mds_log) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".log "
-#define  derr(l)    if (l<=g_conf.debug_mds || l <= g_conf.debug_mds_log) *_derr << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".log "
+#define DOUT_SUBSYS mds
+#undef DOUT_COND
+#define DOUT_COND(l) l<=g_conf.debug_mds || l <= g_conf.debug_mds_log
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".log "
 
 // cons/des
 
index 1b89ef8832fcb5874ef3333e8286423f79e32463..a6ce88f0ec58251b63b207d038b331fa64e3349e 100644 (file)
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << whoami << " "
-#define  derr(l)    if (l<=g_conf.debug || l <= g_conf.debug_mds) *_derr << dbeginl << g_clock.now() << " mds" << whoami << " "
-
-
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << whoami << " "
 
 
 
@@ -557,7 +556,7 @@ void MDS::handle_mds_map(MMDSMap *m)
   if (whoami >= 0 &&
       mdsmap->is_up(whoami) &&
       (oldwhoami != whoami || !logger)) {
-    create_courtesy_output_symlink("mds", whoami);
+    _dout_create_courtesy_output_symlink("mds", whoami);
     reopen_logger(mdsmap->get_created());   // adopt mds cluster timeline
   }
   
index 0a5c1d1d24ac41be82b90304c1a5852c8fdf2773..a4c9bc107f6a54ff943458d32fbf974382aced22 100644 (file)
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << "." << table_name << ": "
+
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << "." << table_name << ": "
+
 
 class C_MT_Save : public Context {
   MDSTable *ida;
index 4041992b078bc4ef410601645d96b71ca031a06e..5fdf4260d1f81160911e6e3518717dc1e7e6ecf2 100644 (file)
@@ -32,8 +32,9 @@ using std::cerr;
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " " << mds->messenger->get_myname() << ".tableclient "
-#define derr(x)  if (x <= g_conf.debug_mds) *_derr << dbeginl << g_clock.now() << " " << mds->messenger->get_myname() << ".tableclient "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".tableclient(" << get_mdstable_name(table) << ") "
 
 
 void MDSTableClient::handle_request(class MMDSTableRequest *m)
index e083cb8f0c9b098b3965565af69a792f196b3d95..c1d65fc0f83df2277d3f291f960506f08ea05d66 100644 (file)
@@ -20,8 +20,9 @@
 #include "messages/MMDSTableRequest.h"
 #include "events/ETableServer.h"
 
-#define dout(x)  if (x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " " << mds->messenger->get_myname() << ".tableserver(" << get_mdstable_name(table) << ") "
-#define derr(x)  if (x <= g_conf.debug_mds) *_derr << dbeginl << g_clock.now() << " " << mds->messenger->get_myname() << ".tableserver(" << get_mdstable_name(table) << ") "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".tableserver(" << get_mdstable_name(table) << ") "
 
 
 void MDSTableServer::handle_request(MMDSTableRequest *req)
index 640ca59a7439c3cdb40f5f6c06da70711fae1936..1187dc2cab2ed2033d3409a0e8c894babc6713f8 100644 (file)
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l <= g_conf.debug_mds || l <= g_conf.debug_mds_migrator) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".migrator "
 
+#define DOUT_SUBSYS mds
+#undef DOUT_COND
+#define DOUT_COND(l) l <= g_conf.debug_mds || l <= g_conf.debug_mds_migrator
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".migrator "
 
 
 void Migrator::dispatch(Message *m)
index 18706b9eb048148c3c20e3d38852babdb87fff96..d219521f95ab6ffda51db610641712f8ba34f085 100644 (file)
@@ -60,8 +60,9 @@ using namespace std;
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".server "
-#define  derr(l)    if (l<=g_conf.debug || l <= g_conf.debug_mds) *_derr << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".server "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".server "
 
 
 void Server::reopen_logger(utime_t start, bool append)
index a1c41f2d053df8b0f803c27da64f16480ba1af85..2d347e980dcf3d8d072b8d3caea8fad229e33c2f 100644 (file)
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".sessionmap "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".sessionmap "
+
 
 void SessionMap::init_inode()
 {
index 9c1ac9e2dd2d68278c548c5b9894510be16cf0ef..e9ab10f9bc1cc1d3f97eea72f783411b09c0e374 100644 (file)
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".snap: "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".snap "
+
 
 void SnapServer::init_inode()
 {
index 173bcf5e41719b69f232b41cbed76b684c9833a1..55849c4e6549b030d20c9f11fade74c3c03eb0ad 100644 (file)
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug_mds || l <= g_conf.debug_mds_log || l <= g_conf.debug_mds_log_expire) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".journal "
-#define  derr(l)    if (l<=g_conf.debug_mds || l <= g_conf.debug_mds_log || l <= g_conf.debug_mds_log_expire) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".journal "
+#define DOUT_SUBSYS mds
+#undef DOUT_COND
+#define DOUT_COND(l) l<=g_conf.debug_mds || l <= g_conf.debug_mds_log || l <= g_conf.debug_mds_log_expire
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "mds" << mds->get_nodeid() << ".journal "
 
 
 // -----------------------
@@ -253,11 +256,8 @@ C_Gather *LogSegment::try_to_expire(MDS *mds)
 }
 
 
-
-#undef dout
-#undef derr
-#define  dout(l)    if (l<=g_conf.debug_mds || l <= g_conf.debug_mds_log) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".journal "
-#define  derr(l)    if (l<=g_conf.debug_mds || l <= g_conf.debug_mds_log) *_dout << dbeginl << g_clock.now() << " mds" << mds->get_nodeid() << ".journal "
+#undef DOUT_COND
+#define DOUT_COND(l) l<=g_conf.debug_mds || l <= g_conf.debug_mds_log
 
 
 // -----------------------
index 4e64c9d37efbf054ae425911f5f83855023ca5af..13eddd35f45e7a05a7cce91413407a58b11adf6a 100644 (file)
  * SnapRealm
  */
 
-#define dout(x) if (x <= g_conf.debug_mds) *_dout << dbeginl << g_clock.now() \
-                                                 << " mds" << mdcache->mds->get_nodeid() \
-                                                 << ".cache.snaprealm(" << inode->ino() \
-                                                 << " seq " << seq << " " << this << ") "
+#define DOUT_SUBSYS mds
+#undef dout_prefix
+#define dout_prefix _prefix(mdcache->mds->get_nodeid(), inode, seq, this)
+static ostream& _prefix(int whoami, CInode *inode, __u64 seq, SnapRealm *realm) {
+  return *_dout << dbeginl << g_clock.now() 
+               << " mds" << whoami
+               << ".cache.snaprealm(" << inode->ino()
+               << " seq " << seq << " " << realm << ") ";
+}
 
 ostream& operator<<(ostream& out, const SnapRealm& realm) 
 {
index 83b5d4783533312d3ef6f0845636637fc2792806..615498f693072e2c83e24158d2ba4861767fc5ea 100644 (file)
 
 #include "config.h"
 
-#define  dout(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_dout << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".client v" << client_map.version << " "
-#define  derr(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_derr << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".client v" << client_map.version << " "
-
+#define DOUT_SUBSYS mon
+#undef dout_prefix
+#define dout_prefix _prefix(mon, client_map)
+static ostream& _prefix(Monitor *mon, ClientMonitor::Map& client_map) {
+  return *_dout << dbeginl
+               << "mon" << mon->whoami
+               << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)")))
+               << ".client v" << client_map.version << " ";
+}
 
 ostream& operator<<(ostream& out, ClientMonitor& om)
 {
index 7077385e9ea7f838a262de5472265f93cc566755..75d1c2c4c9d5076b72ac04cf0f51ae38bb02c139 100644 (file)
 
 #include "config.h"
 
-#define  dout(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_dout << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".elector(" << epoch << ") "
-#define  derr(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_derr << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".elector(" << epoch << ") "
+#define DOUT_SUBSYS mon
+#undef dout_prefix
+#define dout_prefix _prefix(mon, epoch)
+static ostream& _prefix(Monitor *mon, epoch_t epoch) {
+  return *_dout << dbeginl
+               << "mon" << mon->whoami
+               << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)")))
+               << ".elector(" << epoch << ") ";
+}
 
 
 void Elector::init()
index 25f1ad70b9969fe2fa66aeb51cd388296d88834b..abf8b3ba4fc0d39560ec4a0a26b17ee40b366aa0 100644 (file)
 
 #include "config.h"
 
-#define  dout(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_dout << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".mds e" << mdsmap.get_epoch() << " "
-#define  derr(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_derr << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".mds e" << mdsmap.get_epoch() << " "
+#define DOUT_SUBSYS mon
+#undef dout_prefix
+#define dout_prefix _prefix(mon, mdsmap)
+static ostream& _prefix(Monitor *mon, MDSMap& mdsmap) {
+  return *_dout << dbeginl
+               << "mon" << mon->whoami 
+               << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)")))
+               << ".mds e" << mdsmap.get_epoch() << " ";
+}
 
 
 
index 73d22962c2413ca66a6cfd8e1826e5af78fc57a4..572bd467159ba38859522c17a6b8d6a3ea975fbc 100644 (file)
@@ -8,8 +8,8 @@
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug || x <= g_conf.debug_mon) *_dout << dbeginl << g_clock.now() << " monclient "
-#define derr(x)  if (x <= g_conf.debug || x <= g_conf.debug_mon) *_derr << dbeginl << g_clock.now() << " monclient "
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << " monclient "
 
 Mutex monmap_lock("monmap_lock");
 Cond monmap_cond;
index bb189c78a2b06ee6b7709684e26e38f3e239004a..7e6073bf0b1b447160045a5bda5d9ce33ebd2b7a 100644 (file)
 
 #include "config.h"
 
-#define  dout(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_dout << dbeginl << g_clock.now() << " mon" << whoami << (is_starting() ? (const char*)"(starting)":(is_leader() ? (const char*)"(leader)":(is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << " "
-#define  derr(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_derr << dbeginl << g_clock.now() << " mon" << whoami << (is_starting() ? (const char*)"(starting)":(is_leader() ? (const char*)"(leader)":(is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << " "
+#define DOUT_SUBSYS mon
+#undef dout_prefix
+#define dout_prefix _prefix(this)
+static ostream& _prefix(Monitor *mon) {
+  return *_dout << dbeginl
+               << " mon" << mon->whoami
+               << (mon->is_starting() ?
+                   (const char*)"(starting)" : 
+                   (mon->is_leader() ?
+                    (const char*)"(leader)" :
+                    (mon->is_peon() ? 
+                     (const char*)"(peon)" : 
+                     (const char*)"(?\?)")))
+               << " ";
+}
 
 Monitor::Monitor(int w, MonitorStore *s, Messenger *m, MonMap *map) :
   whoami(w), 
index 8bc16804420e74cf94632176dc300d1fdca066ab..315e02b95cd3af2f6d8311875459422de959291d 100644 (file)
 
 #include "config.h"
 
-#define  dout(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_dout << dbeginl << g_clock.now() << " store(" << dir <<") "
-#define  derr(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_derr << dbeginl << g_clock.now() << " store(" << dir <<") "
+#define DOUT_SUBSYS mon
+#undef dout_prefix
+#define dout_prefix _prefix(dir)
+static ostream& _prefix(const string& dir) {
+  return *_dout << dbeginl << "store(" << dir << ") ";
+}
+
 
 #include <stdio.h>
 #include <sys/types.h>
index c41494d9dae872f732849eaac37c011ae2ede0cd..f0a5ce5cb6c6bdaab9cdded791a09ce45961ec5c 100644 (file)
 
 #include <sstream>
 
-#define  dout(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_dout << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".osd e" << osdmap.get_epoch() << " "
-#define  derr(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_derr << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".osd e" << osdmap.get_epoch() << " "
+#define DOUT_SUBSYS mon
+#undef dout_prefix
+#define dout_prefix _prefix(mon, osdmap)
+static ostream& _prefix(Monitor *mon, OSDMap& osdmap) {
+  return *_dout << dbeginl 
+               << "mon" << mon->whoami
+               << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)")))
+               << ".osd e" << osdmap.get_epoch() << " ";
+}
 
 
 // FAKING
index 5c849b8c4b415d38964e5809558705d1006f3bc0..3ebf6dfa54d8240ef255232ecde433e48863f4dd 100644 (file)
 #include "config.h"
 #include <sstream>
 
-
-#define  dout(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_dout << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".pg v" << pg_map.version << " "
-#define  derr(l) if (l<=g_conf.debug || l<=g_conf.debug_mon) *_derr << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".pg v" << pg_map.version << " "
+#define DOUT_SUBSYS mon
+#undef dout_prefix
+#define dout_prefix _prefix(mon, pg_map)
+static ostream& _prefix(Monitor *mon, PGMap& pg_map) {
+  return *_dout << dbeginl
+               << "mon" << mon->whoami
+               << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)")))
+               << ".pg v" << pg_map.version << " ";
+}
 
 struct kb_t {
   uint64_t v;
index 2c751ec27a89f40b80fa98715bda7201697106e4..86349def3f3514fc8f6eab1ab9ad6156546dc8bb 100644 (file)
 
 #include "config.h"
 
-#define  dout(l) if (l<=g_conf.debug || l<=g_conf.debug_paxos) *_dout << dbeginl << g_clock.now() << " mon" << whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".paxos(" << machine_name << " " << get_statename(state) << " lc " << last_committed << ") "
-#define  derr(l) if (l<=g_conf.debug || l<=g_conf.debug_paxos) *_derr << dbeginl << g_clock.now() << " mon" << whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".paxos(" << machine_name << " " << get_statename(state) << " lc " << last_committed << ") "
+#define DOUT_SUBSYS paxos
+#undef dout_prefix
+#define dout_prefix _prefix(mon, whoami, machine_name, state, last_committed)
+static ostream& _prefix(Monitor *mon, int whoami, const char *machine_name, int state, version_t last_committed) {
+  return *_dout << dbeginl
+               << "mon" << whoami
+               << (mon->is_starting() ?
+                   (const char*)"(starting)" :
+                   (mon->is_leader() ?
+                    (const char*)"(leader)" : 
+                    (mon->is_peon() ?
+                     (const char*)"(peon)" : (const char*)"(?\?)"))) 
+               << ".paxos(" << machine_name << " " << Paxos::get_statename(state) << " lc " << last_committed
+               << ") ";
+}
 
 
 void Paxos::init()
index d429d1b03f78cd903f2325f064082f7cde6a62a1..6db33eb3215d46a2d1e67a78baed26b6df8ce17b 100644 (file)
@@ -81,7 +81,7 @@ public:
   const static int STATE_RECOVERING = 1;  // leader|peon: recovering paxos state
   const static int STATE_ACTIVE     = 2;  // leader|peon: idle.  peon may or may not have valid lease
   const static int STATE_UPDATING   = 3;  // leader|peon: updating to new value
-  const char *get_statename(int s) {
+  static const char *get_statename(int s) {
     switch (s) {
     case STATE_RECOVERING: return "recovering";
     case STATE_ACTIVE: return "active";
index 21733b88639e78135eca8650b5fc320892e25d9a..846942d24a88eebfb1e995b8222ef4f981d68abd 100644 (file)
 
 #include "config.h"
 
-#define  dout(l) if (l<=g_conf.debug || l<=g_conf.debug_paxos) *_dout << dbeginl << g_clock.now() << " mon" << mon->whoami << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)"))) << ".paxosservice(" << get_paxos_name(paxos->machine_id) << ") "
-
+#define DOUT_SUBSYS paxos
+#undef dout_prefix
+#define dout_prefix _prefix(mon, paxos, paxos->machine_id)
+static ostream& _prefix(Monitor *mon, Paxos *paxos, int machine_id) {
+  return *_dout << dbeginl
+               << "mon" << mon->whoami
+               << (mon->is_starting() ? (const char*)"(starting)":(mon->is_leader() ? (const char*)"(leader)":(mon->is_peon() ? (const char*)"(peon)":(const char*)"(?\?)")))
+               << ".paxosservice(" << get_paxos_name(machine_id) << ") ";
+}
 
 const char *PaxosService::get_machine_name()
 {
index b8641fcba90570902fe0b2c8bbf51e5ca45f6bef..fa9db4385f93fd78b37f84e5b5571e5821e0b6ab 100644 (file)
@@ -106,7 +106,6 @@ using namespace std;
 
 #include "config.h"
 
-#define dout(l)    if (l<=g_conf.debug) *_dout << dbeginl << g_clock.now() << " MESSENGER: "
 #define DEBUGLVL  10    // debug level of output
 
 
index d5f89fa77f71e3b3dc895ae998b1d6f4dc391962..944d63d02227ac8766bb07cb61af46128fa4c0e5 100644 (file)
 
 #include "common/Timer.h"
 
-#define dout(l)  if (l<=g_conf.debug_ms) *_dout << dbeginl << g_clock.now() << " " << pthread_self() << " -- " << rank.rank_addr << " "
-#define derr(l)  if (l<=g_conf.debug_ms) *_derr << dbeginl << g_clock.now() << " " << pthread_self() << " -- " << rank.rank_addr << " "
-
+#define DOUT_SUBSYS ms
+#undef dout_prefix
+#define dout_prefix _prefix()
+static ostream& _prefix() {
+  return *_dout << dbeginl << pthread_self() << " -- " << rank.rank_addr << " ";
+}
 
 
 #include "tcp.cc"
@@ -319,7 +322,7 @@ int Rank::start(bool nodaemon)
     }
     dout(1) << "rank.start daemonizing" << dendl;
     daemon(1, 0);  /* fixme.. we should chdir(/) too! */
-    rename_output_file();
+    _dout_rename_output_file();
   }
 
   // some debug hackery?
@@ -766,10 +769,12 @@ void Rank::mark_down(entity_addr_t addr)
  * Pipe
  */
 
-#undef dout
-#undef derr
-#define dout(l)  if (l<=g_conf.debug_ms) *_dout << dbeginl << g_clock.now() << " " << pthread_self() << " -- " << rank.rank_addr << " >> " << peer_addr << " pipe(" << this << ")."
-#define derr(l)  if (l<=g_conf.debug_ms) *_derr << dbeginl << g_clock.now() << " " << pthread_self() << " -- " << rank.rank_addr << " >> " << peer_addr << " pipe(" << this << ")."
+#undef dout_prefix
+#define dout_prefix _pipe_prefix()
+ostream& Rank::Pipe::_pipe_prefix() {
+  return *_dout << dbeginl << pthread_self()
+               << " -- " << rank.rank_addr << " >> " << peer_addr << " pipe(" << this << ").";
+}
 
 int Rank::Pipe::accept()
 {
index 1adbacd7d7ebf43a488a015dda0dcb4dcc088d33..a2f5643d6e0858c2fcfb2712c0f15e3ddd477c78 100644 (file)
@@ -104,6 +104,8 @@ private:
   // pipe
   class Pipe {
   public:
+    ostream& _pipe_prefix();
+
     enum {
       STATE_ACCEPTING,
       STATE_CONNECTING,
index a4af966c8b036107aaafebf66a0a118190276c77..69f4ad70c74c6bf2ef6848b7e9069c74711ad457 100644 (file)
@@ -21,9 +21,9 @@
 #include <fcntl.h>
 
 
-
-#define dout(x) if (x <= g_conf.debug_journal) *_dout << dbeginl << g_clock.now() << " journal "
-#define derr(x) if (x <= g_conf.debug_journal) *_derr << dbeginl << g_clock.now() << " journal "
+#define DOUT_SUBSYS journal
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "journal "
 
 
 int FileJournal::_open(bool forwrite)
index f88be9b68bc22f4b05f060fde0c2be7403605b9f..9374c124fbd5d8bc2f1bd59a896442a8beeb6c99 100644 (file)
@@ -92,8 +92,9 @@ struct btrfs_ioctl_usertrans {
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug_filestore) *_dout << dbeginl << g_clock.now() << " filestore(" << basedir << ") "
-#define  derr(l)    if (l<=g_conf.debug_filestore) *_derr << dbeginl << g_clock.now() << " filestore(" << basedir << ") "
+#define DOUT_SUBSYS filestore
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "filestore(" << basedir << ") "
 
 #include "include/buffer.h"
 
index 9f66b3d16996e6a0be82dc43b5b3fbd8b553ab91..5b6cf8b0912e0f4a027e31a53d1258113d2c30ec 100644 (file)
@@ -3,8 +3,10 @@
 
 #include "config.h"
 
-#define dout(x) if (x <= g_conf.debug_journal) *_dout << dbeginl << g_clock.now() << " journal "
-#define derr(x) if (x <= g_conf.debug_journal) *_derr << dbeginl << g_clock.now() << " journal "
+#define DOUT_SUBSYS journal
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << "journal "
+
 
 int JournalingObjectStore::journal_replay()
 {
index 9ac779f234ea971404b8ddaf6407aefceb7071e4..ee735eac2588d446c0dab873fde570d214cbff51 100644 (file)
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l<=g_conf.debug_osd) *_dout << dbeginl << g_clock.now() << " " << pthread_self() << " osd" << whoami << " " << (osdmap ? osdmap->get_epoch():0) << " "
-#define  derr(l)    if (l<=g_conf.debug || l<=g_conf.debug_osd) *_derr << dbeginl << g_clock.now() << " osd" << whoami << " " << (osdmap ? osdmap->get_epoch():0) << " "
+#define DOUT_SUBSYS osd
+#undef dout_prefix
+#define dout_prefix _prefix(*_dout, whoami, osdmap)
+
+static ostream& _prefix(ostream& out, int whoami, OSDMap *osdmap) {
+  return out << dbeginl << pthread_self()
+            << " osd" << whoami << " " << (osdmap ? osdmap->get_epoch():0) << " ";
+}
+
 
 
 
index 5d1905d1927d5c1352dc90dd537f4762c17fc2f5..c587ba7b13e6d2607fe62658f060942e074e0867 100644 (file)
@@ -15,8 +15,6 @@
 #include "OSDMap.h"
 
 #include "config.h"
-#define dout generic_dout
-#define derr generic_derr
 
 
 void OSDMap::build_simple(epoch_t e, ceph_fsid &fsid,
index 0c5d7383785d2fca549a0a2aa8da2647a010d69d..f05309df4330f738a1e853dc4feeea2499889bc6 100644 (file)
 #include "messages/MOSDPGRemove.h"
 #include "messages/MOSDPGInfo.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l<=g_conf.debug_osd) *_dout << dbeginl << g_clock.now() << " " << pthread_self() << " osd" << osd->whoami << " " << (osd->osdmap ? osd->osdmap->get_epoch():0) << " " << *this << " "
+#define DOUT_SUBSYS osd
+#undef dout_prefix
+#define dout_prefix _prefix(this, osd->whoami, osd->osdmap)
+static ostream& _prefix(PG *pg, int whoami, OSDMap *osdmap) {
+  return *_dout << dbeginl<< pthread_self() << " osd" << whoami << " " << (osdmap ? osdmap->get_epoch():0) << " " << *pg << " ";
+}
 
 
 /******* PGLog ********/
index 9f674ea438a54b6af560f8be53280daa0a421495..b7ad015ad6c9a3eba9d69e2c214c2266c4b53c63 100644 (file)
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l<=g_conf.debug_osd) *_dout << dbeginl << g_clock.now() << " osd" << osd->get_nodeid() << " " << (osd->osdmap ? osd->osdmap->get_epoch():0) << " " << *this << " "
+#define DOUT_SUBSYS osd
+#undef dout_prefix
+#define dout_prefix _prefix(this, osd->whoami, osd->osdmap)
+static ostream& _prefix(PG *pg, int whoami, OSDMap *osdmap) {
+  return *_dout << dbeginl << pthread_self()
+               << " osd" << whoami 
+               << " " << (osdmap ? osdmap->get_epoch():0) << " "
+               << *pg << " ";
+}
+
 
 #include <errno.h>
 #include <sys/stat.h>
index 82a8cd23f5965dc9863902734f38eb111fd11018..775f5ef9aa02d77ec6db8b4f5c53048a7bda32ca 100644 (file)
 
 #include "config.h"
 
-#define  dout(l)    if (l<=g_conf.debug || l<=g_conf.debug_osd) *_dout << dbeginl << g_clock.now() << " " << pthread_self() << " osd" << osd->get_nodeid() << " " << (osd->osdmap ? osd->osdmap->get_epoch():0) << " " << *this << " "
-#define  derr(l)    if (l<=g_conf.debug || l<=g_conf.debug_osd) *_derr << dbeginl << g_clock.now() << " osd" << osd->get_nodeid() << " " << (osd->osdmap ? osd->osdmap->get_epoch():0) << " " << *this << " "
+#define DOUT_SUBSYS osd
+#define DOUT_PREFIX_ARGS this, osd->whoami, osd->osdmap
+#undef dout_prefix
+#define dout_prefix _prefix(this, osd->whoami, osd->osdmap)
+static ostream& _prefix(PG *pg, int whoami, OSDMap *osdmap) {
+  return *_dout << dbeginl<< pthread_self() << " osd" << whoami << " " << (osdmap ? osdmap->get_epoch():0) << " " << *pg << " ";
+}
+
+
 
 #include <errno.h>
 #include <sys/stat.h>
index 0debe242fd54bb976044cfdfecdf76b837e298e3..e3f4ff8ebac1a6d873bcfa809d8b24c94be56a58 100644 (file)
@@ -26,7 +26,9 @@
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug || x <= g_conf.debug_filer) *_dout << dbeginl << g_clock.now() << " " << objecter->messenger->get_myname() << ".filer "
+#define DOUT_SUBSYS filer
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << objecter->messenger->get_myname() << ".filer "
 
 
 class Filer::C_Probe : public Context {
index acffaf3506956408b6b39cd0b50bace40ad9f16b..378a701770d2c6c1bf6307f6ff72e822dca4336a 100644 (file)
@@ -20,8 +20,9 @@
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug || x <= g_conf.debug_journaler) *_dout << dbeginl << g_clock.now() << " " << objecter->messenger->get_myname() << ".journaler "
-#define derr(x)  if (x <= g_conf.debug || x <= g_conf.debug_journaler) *_derr << dbeginl << g_clock.now() << " " << objecter->messenger->get_myname() << ".journaler "
+#define DOUT_SUBSYS journaler
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << objecter->messenger->get_myname() << ".journaler "
 
 
 
index c663b80bae5f4853b1b22f876abef0302f9fe37f..3cfb5f6c51c454c49425aca6c066641680f2255c 100644 (file)
 
 /*** ObjectCacher::Object ***/
 
-#define dout(l)    if (l<=g_conf.debug || l<=g_conf.debug_objectcacher) *_dout << dbeginl << g_clock.now() << " " << oc->objecter->messenger->get_myname() << ".objectcacher.object(" << oid << ") "
+#define DOUT_SUBSYS objectcacher
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << oc->objecter->messenger->get_myname() << ".objectcacher.object(" << oid << ") "
+
 
 
 ObjectCacher::BufferHead *ObjectCacher::Object::split(BufferHead *left, loff_t off)
@@ -369,9 +372,8 @@ void ObjectCacher::Object::truncate(loff_t s)
 
 /*** ObjectCacher ***/
 
-#undef dout
-#define dout(l)    if (l<=g_conf.debug || l<=g_conf.debug_objectcacher) *_dout << dbeginl << g_clock.now() << " " << objecter->messenger->get_myname() << ".objectcacher "
-
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << objecter->messenger->get_myname() << ".objectcacher "
 
 
 /* private */
index 981a4dd012bbc8418ea89ce83518ca745eb95424..611a328ed0992ab46a092b4ae79593ae49f0893e 100644 (file)
@@ -31,8 +31,9 @@
 
 #include "config.h"
 
-#define dout(x)  if (x <= g_conf.debug || x <= g_conf.debug_objecter) *_dout << dbeginl << g_clock.now() << " " << messenger->get_myname() << ".objecter "
-#define derr(x)  if (x <= g_conf.debug || x <= g_conf.debug_objecter) *_derr << dbeginl << g_clock.now() << " " << messenger->get_myname() << ".objecter "
+#define DOUT_SUBSYS objecter
+#undef dout_prefix
+#define dout_prefix *_dout << dbeginl << messenger->get_myname() << ".objecter "
 
 
 // messages ------------------------------