]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: mds debug scatterstat to print out projected rstat/fragstat
authorSage Weil <sage@newdream.net>
Thu, 4 Nov 2010 20:17:01 +0000 (13:17 -0700)
committerSage Weil <sage@newdream.net>
Thu, 4 Nov 2010 20:17:48 +0000 (13:17 -0700)
Signed-off-by: Sage Weil <sage@newdream.net>
src/config.cc
src/config.h
src/mds/CDir.cc
src/mds/CInode.cc
src/vstart.sh

index c59fe5da9711e9f19823801a6370d63e5ed72e9e..fb2cf6045bf94b62aaf08d5aea16b6271fc49de9 100644 (file)
@@ -481,6 +481,7 @@ static struct config_option config_optionsp[] = {
        OPTION(mds_dump_cache_after_rejoin, 0, OPT_BOOL, false),
        OPTION(mds_hack_log_expire_for_better_stats, 0, OPT_BOOL, false),
        OPTION(mds_verify_scatter, 0, OPT_BOOL, false),
+       OPTION(mds_debug_scatterstat, 0, OPT_BOOL, false),
        OPTION(mds_kill_mdstable_at, 0, OPT_INT, 0),
        OPTION(mds_kill_export_at, 0, OPT_INT, 0),
        OPTION(mds_kill_import_at, 0, OPT_INT, 0),
index 4e8ce03f014c4dd4606d0839e5cd544b14a169e7..c36e10541be7342e0e1128b57f8fabefafb62b0f 100644 (file)
@@ -312,6 +312,7 @@ struct md_config_t {
 
   // set these to non-zero to specify kill points
   bool mds_verify_scatter;
+  bool mds_debug_scatterstat;
   int mds_kill_mdstable_at;
   int mds_kill_export_at;
   int mds_kill_import_at;
index 5d24d9920c607950bb5f44df78a308d8ff80a984..a968ecd068296abf5aa1c2d776dd0a2c99bd7b50 100644 (file)
@@ -99,7 +99,7 @@ ostream& operator<<(ostream& out, CDir& dir)
   out << " " << dir.fnode.fragstat;
   if (!(dir.fnode.fragstat == dir.fnode.accounted_fragstat))
     out << "/" << dir.fnode.accounted_fragstat;
-  if (false && dir.is_projected()) {
+  if (g_conf.mds_debug_scatterstat && dir.is_projected()) {
     fnode_t *pf = dir.get_projected_fnode();
     out << "->" << pf->fragstat;
     if (!(pf->fragstat == pf->accounted_fragstat))
@@ -110,7 +110,7 @@ ostream& operator<<(ostream& out, CDir& dir)
   out << " " << dir.fnode.rstat;
   if (!(dir.fnode.rstat == dir.fnode.accounted_rstat))
     out << "/" << dir.fnode.accounted_rstat;
-  if (false && dir.is_projected()) {
+  if (g_conf.mds_debug_scatterstat && dir.is_projected()) {
     fnode_t *pf = dir.get_projected_fnode();
     out << "->" << pf->rstat;
     if (!(pf->rstat == pf->accounted_rstat))
index c1204e2ecf18a6c84f1cf44cab8423effb8f3818..0737bd635b956d73e1447b7aacee29b608653fad 100644 (file)
@@ -137,7 +137,10 @@ ostream& operator<<(ostream& out, CInode& in)
 
   if (in.inode.is_dir()) {
     out << " " << in.inode.dirstat;
-    //if (in.inode.dirstat.version > 10000) out << " BADDIRSTAT";
+    if (g_conf.mds_debug_scatterstat && in.is_projected()) {
+      inode_t *pi = in.get_projected_inode();
+      out << "->" << pi->dirstat;
+    }
   } else {
     out << " s=" << in.inode.size;
     if (in.inode.nlink != 1)
@@ -148,6 +151,12 @@ ostream& operator<<(ostream& out, CInode& in)
   out << " " << in.inode.rstat;
   if (!(in.inode.rstat == in.inode.accounted_rstat))
     out << "/" << in.inode.accounted_rstat;
+  if (g_conf.mds_debug_scatterstat && in.is_projected()) {
+    inode_t *pi = in.get_projected_inode();
+    out << "->" << pi->rstat;
+    if (!(pi->rstat == pi->accounted_rstat))
+      out << "/" << pi->accounted_rstat;
+  }
 
   if (!in.client_need_snapflush.empty())
     out << " need_snapflush=" << in.client_need_snapflush;
index 308f932de821125cd9bb868b3bd090e02c92ebf0..d0f61a758412c3bfb4541eae5f81b799fb1a2c39 100755 (executable)
@@ -168,6 +168,8 @@ else
         debug mds = 20
         debug auth = 20
         debug monc = 20
+        mds debug scatterstat = true
+        mds verify scatter = true
         mds log max segments = 2'
 fi