aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/ext4/mballoc.c16
1 files changed, 5 insertions, 11 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 1c535fa67640..2299d629eeb1 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -4815,18 +4815,12 @@ do_more:
4815 /* 4815 /*
4816 * blocks being freed are metadata. these blocks shouldn't 4816 * blocks being freed are metadata. these blocks shouldn't
4817 * be used until this transaction is committed 4817 * be used until this transaction is committed
4818 *
4819 * We use __GFP_NOFAIL because ext4_free_blocks() is not allowed
4820 * to fail.
4818 */ 4821 */
4819 retry: 4822 new_entry = kmem_cache_alloc(ext4_free_data_cachep,
4820 new_entry = kmem_cache_alloc(ext4_free_data_cachep, GFP_NOFS); 4823 GFP_NOFS|__GFP_NOFAIL);
4821 if (!new_entry) {
4822 /*
4823 * We use a retry loop because
4824 * ext4_free_blocks() is not allowed to fail.
4825 */
4826 cond_resched();
4827 congestion_wait(BLK_RW_ASYNC, HZ/50);
4828 goto retry;
4829 }
4830 new_entry->efd_start_cluster = bit; 4824 new_entry->efd_start_cluster = bit;
4831 new_entry->efd_group = block_group; 4825 new_entry->efd_group = block_group;
4832 new_entry->efd_count = count_clusters; 4826 new_entry->efd_count = count_clusters;