Skip to content

Commit

Permalink
ext4: let the block device know when unused blocks can be discarded
Browse files Browse the repository at this point in the history
Let the block device know when unused blocks can be discarded, using
the new sb_issue_discard() interface.

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
  • Loading branch information
Theodore Ts'o committed Oct 16, 2008
1 parent a1aebc1 commit 8a0aba7
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 0 deletions.
7 changes: 7 additions & 0 deletions fs/ext4/mballoc.c
Original file line number Diff line number Diff line change
Expand Up @@ -2653,6 +2653,7 @@ ext4_mb_free_committed_blocks(struct super_block *sb)
struct ext4_sb_info *sbi = EXT4_SB(sb);
int err, count = 0, count2 = 0;
struct ext4_free_data *entry;
ext4_fsblk_t discard_block;

if (list_empty(&sbi->s_committed_transaction))
return;
Expand Down Expand Up @@ -2696,6 +2697,12 @@ ext4_mb_free_committed_blocks(struct super_block *sb)
page_cache_release(e4b.bd_bitmap_page);
}
ext4_unlock_group(sb, entry->group);
discard_block = (ext4_fsblk_t) entry->group * EXT4_BLOCKS_PER_GROUP(sb)
+ entry->start_blk
+ le32_to_cpu(EXT4_SB(sb)->s_es->s_first_data_block);
trace_mark(ext4_discard_blocks, "dev %s blk %llu count %u", sb->s_id,
(unsigned long long) discard_block, entry->count);
sb_issue_discard(sb, discard_block, entry->count);

kmem_cache_free(ext4_free_ext_cachep, entry);
ext4_mb_release_desc(&e4b);
Expand Down
2 changes: 2 additions & 0 deletions fs/ext4/mballoc.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
#include <linux/pagemap.h>
#include <linux/seq_file.h>
#include <linux/version.h>
#include <linux/blkdev.h>
#include <linux/marker.h>
#include "ext4_jbd2.h"
#include "ext4.h"
#include "group.h"
Expand Down

0 comments on commit 8a0aba7

Please sign in to comment.