===================================================================
--- 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 */
===================================================================
--- 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 */
int ext4_mb_init(struct super_block *sb, int needs_recovery)
{
struct ext4_sb_info *sbi = EXT4_SB(sb);
-@@ -2542,13 +2562,55 @@
+@@ -2542,13 +2562,57 @@
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_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) {
+ 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;
int ext4_mb_init(struct super_block *sb, int needs_recovery)
{
struct ext4_sb_info *sbi = EXT4_SB(sb);
-@@ -2738,13 +2758,55 @@
+@@ -2738,13 +2758,57 @@
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_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) {
+ 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;