summaryrefslogtreecommitdiffstats
path: root/fs/ext4/ext4.h
diff options
context:
space:
mode:
authorZheng Liu2012-08-17 15:54:17 +0200
committerTheodore Ts'o2012-08-17 15:54:17 +0200
commit67a5da564f97f31c4054d358e00b34d7ee570da5 (patch)
tree525f256d46cfac4be0b0acd90cc2bad5fcdb1b77 /fs/ext4/ext4.h
parentext4: add missing space to trace message (diff)
downloadkernel-qcow2-linux-67a5da564f97f31c4054d358e00b34d7ee570da5.tar.gz
kernel-qcow2-linux-67a5da564f97f31c4054d358e00b34d7ee570da5.tar.xz
kernel-qcow2-linux-67a5da564f97f31c4054d358e00b34d7ee570da5.zip
ext4: make the zero-out chunk size tunable
Currently in ext4 the length of zero-out chunk is set to 7 file system blocks. But if an inode has uninitailized extents from using fallocate to preallocate space, and the workload issues many random writes, this can cause a fragmented extent tree that will unnecessarily grow the extent tree. So create a new sysfs tunable, extent_max_zeroout_kb, which controls the maximum size where blocks will be zeroed out instead of creating a new uninitialized extent. The default of this has been sent to 32kb. CC: Zach Brown <zab@zabbo.net> CC: Andreas Dilger <adilger@dilger.ca> Signed-off-by: Zheng Liu <wenqing.lz@taobao.com> Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Diffstat (limited to 'fs/ext4/ext4.h')
-rw-r--r--fs/ext4/ext4.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 7c0841ecde6c..0df5ee102b61 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1271,6 +1271,9 @@ struct ext4_sb_info {
unsigned long s_sectors_written_start;
u64 s_kbytes_written;
+ /* the size of zero-out chunk */
+ unsigned int s_extent_max_zeroout_kb;
+
unsigned int s_log_groups_per_flex;
struct flex_groups *s_flex_groups;