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@xxxxxxx> Cc: David Woodhouse <David.Woodhouse@xxxxxxxxx> --- This patch depends on the use-rbtree patch by Aneesh which is in the ext4 patch queue. I'm using systemtap and a trace marker to test this patch because my test system uses LVM, and device mapper isn't passing BARRIER_DISCARD, so I can't use blktrace. fs/ext4/mballoc.c | 7 +++++++ fs/ext4/mballoc.h | 2 ++ 2 files changed, 9 insertions(+), 0 deletions(-) diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index c22b904..e86f88b 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -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; @@ -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); diff --git a/fs/ext4/mballoc.h b/fs/ext4/mballoc.h index 9e815c4..94cb7b9 100644 --- a/fs/ext4/mballoc.h +++ b/fs/ext4/mballoc.h @@ -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" -- 1.5.6.1.205.ge2c7.dirty -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html