summaryrefslogtreecommitdiffstats
path: root/fs/ext4/super.c
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2009-03-04 19:31:53 -0500
committerTheodore Ts'o <tytso@mit.edu>2009-03-04 19:31:53 -0500
commit7d39db14a42cbd719c7515b9da8f85a2eb6a0633 (patch)
tree5c93b9f76c9895183d1e973ed296cd9b7a1d9a0e /fs/ext4/super.c
parent9f24e4208f7ee2748f157368b63287dc903fcf60 (diff)
downloadlinux-7d39db14a42cbd719c7515b9da8f85a2eb6a0633.tar.gz
linux-7d39db14a42cbd719c7515b9da8f85a2eb6a0633.tar.bz2
linux-7d39db14a42cbd719c7515b9da8f85a2eb6a0633.zip
ext4: Use struct flex_groups to calculate get_orlov_stats()
Instead of looping over all of the block groups in a flex group summing their summary statistics, start tracking used_dirs in struct flex_groups, and use struct flex_groups instead. This should save a bit of CPU for mkdir-heavy workloads. Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/super.c')
-rw-r--r--fs/ext4/super.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 6b5d5c6399fa..b9aefceb41e7 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -1634,6 +1634,8 @@ static int ext4_fill_flex_info(struct super_block *sb)
ext4_free_inodes_count(sb, gdp));
atomic_set(&sbi->s_flex_groups[flex_group].free_blocks,
ext4_free_blks_count(sb, gdp));
+ atomic_set(&sbi->s_flex_groups[flex_group].used_dirs,
+ ext4_used_dirs_count(sb, gdp));
}
return 1;