diff options
author | Theodore Ts'o <tytso@mit.edu> | 2012-09-18 13:33:44 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2012-09-18 13:33:44 -0400 |
commit | b5e2368baeddf401bf3da9e364fc1c96676279cd (patch) | |
tree | d442a7cc61a579fd500a39fa478dac7427bc1226 /fs/ext4 | |
parent | 90b0a97323f42ead278bbccbdf0e123db2add400 (diff) | |
download | linux-b5e2368baeddf401bf3da9e364fc1c96676279cd.tar.gz linux-b5e2368baeddf401bf3da9e364fc1c96676279cd.tar.bz2 linux-b5e2368baeddf401bf3da9e364fc1c96676279cd.zip |
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>
Diffstat (limited to 'fs/ext4')
-rw-r--r-- | fs/ext4/mballoc.c | 2 |
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); |