Due to wanting to stick with 3.11.x baseline, as opposed to whatever you based your diff on, I had to amend the last hunk slightly. Included just FYI. Compiled, rebooting now. It may take some days to get a bug report. diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 4bbbf13b..e6f0d6b 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -4734,6 +4734,7 @@ do_more: if (err) goto error_return; + might_sleep(); if ((flags & EXT4_FREE_BLOCKS_METADATA) && ext4_handle_valid(handle)) { struct ext4_free_data *new_entry; /* @@ -4741,6 +4742,7 @@ do_more: * be used until this transaction is committed */ retry: + might_sleep(); new_entry = kmem_cache_alloc(ext4_free_data_cachep, GFP_NOFS); if (!new_entry) { /* @@ -4756,6 +4758,7 @@ do_more: new_entry->efd_count = count_clusters; new_entry->efd_tid = handle->h_transaction->t_tid; + might_sleep(); ext4_lock_group(sb, block_group); mb_clear_bits(bitmap_bh->b_data, bit, count_clusters); ext4_mb_free_metadata(handle, &e4b, new_entry); @@ -4773,7 +4776,7 @@ do_more: err); } - + might_sleep(); ext4_lock_group(sb, block_group); mb_clear_bits(bitmap_bh->b_data, bit, count_clusters); mb_free_blocks(inode, &e4b, bit, count_clusters); @@ -4785,6 +4788,7 @@ do_more: ext4_group_desc_csum_set(sb, block_group, gdp); ext4_unlock_group(sb, block_group); percpu_counter_add(&sbi->s_freeclusters_counter, count_clusters); + might_sleep(); if (sbi->s_log_groups_per_flex) { ext4_group_t flex_group = ext4_flex_group(sbi, block_group); -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html