From: Jing Zhang <zj.barak@xxxxxxxxx> Date: Thu Mar 18 20:33:44 2010 When unexpected errors occur, there is memory leakage, and more. Cc: Theodore Ts'o <tytso@xxxxxxx> Cc: Andreas Dilger <adilger@xxxxxxx> Cc: Dave Kleikamp <shaggy@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 +++ zj/mballoc.c 2010-03-18 20:41:32.000000000 +0800 @@ -3717,6 +3717,7 @@ void ext4_discard_preallocations(struct struct list_head list; struct ext4_buddy e4b; int err; + int occurs = 0; if (!S_ISREG(inode->i_mode)) { /*BUG_ON(!list_empty(&ei->i_prealloc_list));*/ @@ -3781,6 +3782,7 @@ repeat: } spin_unlock(&ei->i_prealloc_lock); +best_efforts: list_for_each_entry_safe(pa, tmp, &list, u.pa_tmp_list) { BUG_ON(pa->pa_type != MB_INODE_PA); ext4_get_group_no_and_offset(sb, pa->pa_pstart, &group, NULL); @@ -3811,6 +3813,12 @@ repeat: list_del(&pa->u.pa_tmp_list); call_rcu(&(pa)->u.pa_rcu, ext4_mb_pa_callback); } + if (! list_empty(&list)) { + if (occurs++ < 2) + goto best_efforts; + else + BUG(); + } if (ac) kmem_cache_free(ext4_ac_cachep, ac); } -- 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