]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: only include head dentries in check_rstats() rstat check
authorSage Weil <sage.weil@dreamhost.com>
Tue, 26 Apr 2011 17:39:46 +0000 (10:39 -0700)
committerSage Weil <sage.weil@dreamhost.com>
Tue, 26 Apr 2011 17:39:46 +0000 (10:39 -0700)
Signed-off-by: Sage Weil <sage.weil@dreamhost.com>
src/mds/CDir.cc

index 704acd62891e87659f4c353fc8374acd59b03876..8472740eaa68902e4842750242b617805f3a06b2 100644 (file)
@@ -209,7 +209,8 @@ bool CDir::check_rstats()
     dout(10) << "check_rstats bailing out -- incomplete or non-auth or frozen dir!" << dendl;
     return true;
   }
-  // first, check basic counts
+
+  // fragstat
   if(!(get_num_head_items()==
       (fnode.fragstat.nfiles + fnode.fragstat.nsubdirs))) {
     dout(1) << "mismatch between head items and fnode.fragstat! printing dentries" << dendl;
@@ -229,9 +230,11 @@ bool CDir::check_rstats()
              << " fnode.fragstat.nsubdirs=" << fnode.fragstat.nsubdirs << dendl;
   }
 
+  // rstat
   nest_info_t sub_info;
   for (map_t::iterator i = items.begin(); i != items.end(); ++i) {
-    if (i->second->get_linkage()->is_primary()) {
+    if (i->second->get_linkage()->is_primary() &&
+       i->second->last == CEPH_NOSNAP) {
       sub_info.add(i->second->get_linkage()->inode->inode.accounted_rstat);
     }
   }