ext4: re-enable -o discard functionality in no-journal mode
This is a revert of commitb56ff9d397
, 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 commit53fdcf992d
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>
This commit is contained in:
parent
90b0a97323
commit
b5e2368bae
|
@ -4656,6 +4656,8 @@ do_more:
|
||||||
* with group lock held. generate_buddy look at
|
* with group lock held. generate_buddy look at
|
||||||
* them with group lock_held
|
* them with group lock_held
|
||||||
*/
|
*/
|
||||||
|
if (test_opt(sb, DISCARD))
|
||||||
|
ext4_issue_discard(sb, block_group, bit, count);
|
||||||
ext4_lock_group(sb, block_group);
|
ext4_lock_group(sb, block_group);
|
||||||
mb_clear_bits(bitmap_bh->b_data, bit, count_clusters);
|
mb_clear_bits(bitmap_bh->b_data, bit, count_clusters);
|
||||||
mb_free_blocks(inode, &e4b, bit, count_clusters);
|
mb_free_blocks(inode, &e4b, bit, count_clusters);
|
||||||
|
|
Loading…
Reference in New Issue