]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
MDS: Don't always _commit_full just because we have a complete dir.
authorGreg Farnum <gregory.farnum@dreamhost.com>
Thu, 10 Feb 2011 21:23:44 +0000 (13:23 -0800)
committerGreg Farnum <gregory.farnum@dreamhost.com>
Sat, 12 Feb 2011 00:16:33 +0000 (16:16 -0800)
Instead, commit if a certain percentage of the dentries are dirty.
Configurable via mds_dir_commit_ratio!

Signed-off-by: Greg Farnum <gregory.farnum@dreamhost.com>
src/config.cc
src/config.h
src/mds/CDir.cc

index b4411c7bf90fc5a97cd47f75689c4a824ee5107e..0d593854bd43819e14a343a6f3b9f11babf8a429 100644 (file)
@@ -355,6 +355,7 @@ static struct config_option config_optionsp[] = {
        OPTION(mds_cache_size, 0, OPT_INT, 100000),
        OPTION(mds_cache_mid, 0, OPT_FLOAT, .7),
        OPTION(mds_mem_max, 0, OPT_INT, 1048576),        // KB
+       OPTION(mds_dir_commit_ratio, 0, OPT_FLOAT, .5),
        OPTION(mds_decay_halflife, 0, OPT_FLOAT, 5),
        OPTION(mds_beacon_interval, 0, OPT_FLOAT, 4),
        OPTION(mds_beacon_grace, 0, OPT_FLOAT, 15),
index 317c10ca204f5dc5ab09408f3d12ae64586d8607..29b1c3120745e45ff567a4386058e8b3f7308b1c 100644 (file)
@@ -233,6 +233,7 @@ struct md_config_t {
   int   mds_cache_size;
   float mds_cache_mid;
   int   mds_mem_max;
+  float mds_dir_commit_ratio;
   
   float mds_decay_halflife;
 
index d3b0b88ff5a124b15d58fa7efd612b748b2e0a8d..8c720b54fc2c06b3dd091361faa7a0947c195b77 100644 (file)
@@ -1744,7 +1744,8 @@ void CDir::_commit(version_t want)
   }
 
   ObjectOperation m;
-  if (is_complete()) {
+  if (is_complete() &&
+      (num_dirty > (num_head_items*g_conf.mds_dir_commit_ratio))) {
     fnode.snap_purged_thru = realm->get_last_destroyed();
     _commit_full(m, snaps);
   } else {