summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ccacd91)
Increase the default value of MB_DEFAULT_ORDER2_REQS to 8, enlarge ext4
preallocation table for 2048 4K blocks extents creation.
i=alex.zhuravlev
i=andrew.perepechko
===================================================================
--- linux-2.6.18-128.1.6.orig/fs/ext4/mballoc.h
+++ linux-2.6.18-128.1.6/fs/ext4/mballoc.h
===================================================================
--- linux-2.6.18-128.1.6.orig/fs/ext4/mballoc.h
+++ linux-2.6.18-128.1.6/fs/ext4/mballoc.h
+@@ -92,7 +92,7 @@
+ /*
+ * for which requests use 2^N search using buddies
+ */
+-#define MB_DEFAULT_ORDER2_REQS 2
++#define MB_DEFAULT_ORDER2_REQS 8
+
+ /*
+ * default group prealloc size 512 blocks
@@ -228,7 +229,7 @@ struct ext4_mb_history {
__u16 tail; /* what tail broke some buddy */
__u16 buddy; /* buddy the tail ^^^ broke */
@@ -228,7 +229,7 @@ struct ext4_mb_history {
__u16 tail; /* what tail broke some buddy */
__u16 buddy; /* buddy the tail ^^^ broke */
===================================================================
--- linux-2.6.27.21-0.1.orig/fs/ext4/mballoc.h
+++ linux-2.6.27.21-0.1/fs/ext4/mballoc.h
===================================================================
--- linux-2.6.27.21-0.1.orig/fs/ext4/mballoc.h
+++ linux-2.6.27.21-0.1/fs/ext4/mballoc.h
+@@ -92,7 +92,7 @@
+ /*
+ * for which requests use 2^N search using buddies
+ */
+-#define MB_DEFAULT_ORDER2_REQS 2
++#define MB_DEFAULT_ORDER2_REQS 8
+
+ /*
+ * default group prealloc size 512 blocks
@@ -219,7 +219,7 @@ struct ext4_mb_history {
__u16 tail; /* what tail broke some buddy */
__u16 buddy; /* buddy the tail ^^^ broke */
@@ -219,7 +219,7 @@ struct ext4_mb_history {
__u16 tail; /* what tail broke some buddy */
__u16 buddy; /* buddy the tail ^^^ broke */
int ext4_mb_init(struct super_block *sb, int needs_recovery)
{
struct ext4_sb_info *sbi = EXT4_SB(sb);
int ext4_mb_init(struct super_block *sb, int needs_recovery)
{
struct ext4_sb_info *sbi = EXT4_SB(sb);
sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN;
sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN;
sbi->s_mb_stats = MB_DEFAULT_STATS;
sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN;
sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN;
sbi->s_mb_stats = MB_DEFAULT_STATS;
- sbi->s_mb_group_prealloc = MB_DEFAULT_GROUP_PREALLOC;
+
+ if (sbi->s_stripe == 0) {
- sbi->s_mb_group_prealloc = MB_DEFAULT_GROUP_PREALLOC;
+
+ if (sbi->s_stripe == 0) {
-+ sbi->s_mb_prealloc_table_size = 8;
++ sbi->s_mb_prealloc_table_size = 10;
+ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long);
+ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS);
+ if (sbi->s_mb_prealloc_table == NULL) {
+ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long);
+ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS);
+ if (sbi->s_mb_prealloc_table == NULL) {
+ ext4_mb_prealloc_table_add(sbi, 128);
+ ext4_mb_prealloc_table_add(sbi, 256);
+ ext4_mb_prealloc_table_add(sbi, 512);
+ ext4_mb_prealloc_table_add(sbi, 128);
+ ext4_mb_prealloc_table_add(sbi, 256);
+ ext4_mb_prealloc_table_add(sbi, 512);
++ ext4_mb_prealloc_table_add(sbi, 1024);
++ ext4_mb_prealloc_table_add(sbi, 2048);
+
+ sbi->s_mb_small_req = 256;
+ sbi->s_mb_large_req = 1024;
+
+ sbi->s_mb_small_req = 256;
+ sbi->s_mb_large_req = 1024;
int ext4_mb_init(struct super_block *sb, int needs_recovery)
{
struct ext4_sb_info *sbi = EXT4_SB(sb);
int ext4_mb_init(struct super_block *sb, int needs_recovery)
{
struct ext4_sb_info *sbi = EXT4_SB(sb);
sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN;
sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN;
sbi->s_mb_stats = MB_DEFAULT_STATS;
sbi->s_mb_max_to_scan = MB_DEFAULT_MAX_TO_SCAN;
sbi->s_mb_min_to_scan = MB_DEFAULT_MIN_TO_SCAN;
sbi->s_mb_stats = MB_DEFAULT_STATS;
- sbi->s_mb_group_prealloc = MB_DEFAULT_GROUP_PREALLOC;
+
+ if (sbi->s_stripe == 0) {
- sbi->s_mb_group_prealloc = MB_DEFAULT_GROUP_PREALLOC;
+
+ if (sbi->s_stripe == 0) {
-+ sbi->s_mb_prealloc_table_size = 8;
++ sbi->s_mb_prealloc_table_size = 10;
+ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long);
+ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS);
+ if (sbi->s_mb_prealloc_table == NULL) {
+ i = sbi->s_mb_prealloc_table_size * sizeof(unsigned long);
+ sbi->s_mb_prealloc_table = kmalloc(i, GFP_NOFS);
+ if (sbi->s_mb_prealloc_table == NULL) {
+ ext4_mb_prealloc_table_add(sbi, 128);
+ ext4_mb_prealloc_table_add(sbi, 256);
+ ext4_mb_prealloc_table_add(sbi, 512);
+ ext4_mb_prealloc_table_add(sbi, 128);
+ ext4_mb_prealloc_table_add(sbi, 256);
+ ext4_mb_prealloc_table_add(sbi, 512);
++ ext4_mb_prealloc_table_add(sbi, 1024);
++ ext4_mb_prealloc_table_add(sbi, 2048);
+
+ sbi->s_mb_small_req = 256;
+ sbi->s_mb_large_req = 1024;
+
+ sbi->s_mb_small_req = 256;
+ sbi->s_mb_large_req = 1024;