From: Jing Zhang <zj.barak@xxxxxxxxx> Date: Tue Mar 30 20:35:22 2010 With the added cache, better group locality may be earned when allocating blocks. Cc: Theodore Ts'o <tytso@xxxxxxx> Cc: Andreas Dilger <adilger@xxxxxxx> Cc: Dave Kleikamp <shaggy@xxxxxxxxxxxxxxxxxx> Cc: "Aneesh Kumar K. V" <aneesh.kumar@xxxxxxxxxxxxxxxxxx> Signed-off-by: Jing Zhang <zj.barak@xxxxxxxxx> --- --- linux-2.6.32/fs/ext4/mballoc.c 2009-12-03 11:51:22.000000000 +0800 +++ ext4_mm_leak/mballoc-13.c 2010-03-30 20:28:08.000000000 +0800 @@ -4183,12 +4183,20 @@ static int ext4_mb_discard_preallocation ext4_group_t i, ngroups = ext4_get_groups_count(sb); int ret; int freed = 0; + static ext4_group_t grp_cache = 0; trace_ext4_mb_discard_preallocations(sb, needed); - for (i = 0; i < ngroups && needed > 0; i++) { - ret = ext4_mb_discard_group_preallocations(sb, i, needed); + if (needed <= 0) + return freed; + for (i = 0; i < ngroups; i++) { + if (grp_cache >= ngroups) + grp_cache -= ngroups; + ret = ext4_mb_discard_group_preallocations(sb, grp_cache, needed); freed += ret; needed -= ret; + if (needed <= 0) + break; + grp_cache++; } return freed; -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html