summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2012-09-18 13:33:44 -0400
committerTheodore Ts'o <tytso@mit.edu>2012-09-18 13:33:44 -0400
commitb5e2368baeddf401bf3da9e364fc1c96676279cd (patch)
treed442a7cc61a579fd500a39fa478dac7427bc1226
parent90b0a97323f42ead278bbccbdf0e123db2add400 (diff)
downloadlinux-b5e2368baeddf401bf3da9e364fc1c96676279cd.tar.bz2
ext4: re-enable -o discard functionality in no-journal mode
This is a revert of commit b56ff9d397ce, which removed the call to ext4_issue_discard() to fix a BUG reported because ext4_issue_discard() was being called from inside a block group spinlock. As it turns out this bug had already been fixed by Lukas Czerner in commit 53fdcf992d61 by the simple expedient of moving when we call ext4_issue_discard() outside the spinlock. So it should be safe to re-enable this functionality, which I tested by putting an BUG_ON(in_atomic) just after the restored callsite to ext4_issue_discard(). Addresses-Google-Bug: #6750518 Signed-off-by: "Theodore Ts'o" <tytso@mit.edu> Cc: Anatol Pomozov <anatol.pomozov@gmail.com>
-rw-r--r--fs/ext4/mballoc.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 2102c20f7e98..2c7c082b8169 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -4656,6 +4656,8 @@ do_more:
* with group lock held. generate_buddy look at
* them with group lock_held
*/
+ if (test_opt(sb, DISCARD))
+ ext4_issue_discard(sb, block_group, bit, count);
ext4_lock_group(sb, block_group);
mb_clear_bits(bitmap_bh->b_data, bit, count_clusters);
mb_free_blocks(inode, &e4b, bit, count_clusters);