]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: partial accounting during split
authorSage Weil <sage@newdream.net>
Mon, 26 May 2008 20:16:41 +0000 (13:16 -0700)
committerSage Weil <sage@newdream.net>
Mon, 26 May 2008 20:16:41 +0000 (13:16 -0700)
src/mds/CDir.cc

index 631b4848c7456578624946395f35cd3fdb8c98d3..8ab1a0f9077cc5890dd07bc366f293cacb80f627 100644 (file)
@@ -493,21 +493,23 @@ void CDir::steal_dentry(CDentry *dn)
     nnull++;
   else {
     nitems++;
-    assert(0); // fixme fix accounting here
-    /* FIXME
     if (dn->is_primary()) {
-      fnode.fragstat.rbytes += dn->get_inode()->inode.accounted_fragstat.rbytes;
-      fnode.fragstat.rfiles += dn->get_inode()->inode.accounted_fragstat.rfiles;
+      inode_t *pi = dn->get_inode()->get_projected_inode();
       if (dn->get_inode()->is_dir())
        fnode.fragstat.nsubdirs++;
       else
        fnode.fragstat.nfiles++;
+      fnode.fragstat.rbytes += pi->accounted_dirstat.rbytes;
+      fnode.fragstat.rfiles += pi->accounted_dirstat.rfiles;
+      fnode.fragstat.rsubdirs += pi->accounted_dirstat.rsubdirs;
+      if (pi->accounted_dirstat.rctime > fnode.fragstat.rctime)
+       fnode.fragstat.rctime = pi->accounted_dirstat.rctime;
     } else if (dn->is_remote()) {
       if (dn->get_remote_d_type() == (S_IFDIR >> 12))
        fnode.fragstat.nsubdirs++;
       else
        fnode.fragstat.nfiles++;
-       }*/
+    }
   }
 
   nested_auth_pins += dn->auth_pins + dn->nested_auth_pins;