From: Harshad Shirwadkar <harshadshirwadkar@xxxxxxxxx> This patch supports creation of freespace trees for prefetched block bitmaps. Signed-off-by: Harshad Shirwadkar <harshadshirwadkar@xxxxxxxxx> --- fs/ext4/mballoc.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c index 4b1c405543f0..168e9708257f 100644 --- a/fs/ext4/mballoc.c +++ b/fs/ext4/mballoc.c @@ -3137,6 +3137,9 @@ ext4_group_t ext4_mb_prefetch(struct super_block *sb, ext4_group_t group, void ext4_mb_prefetch_fini(struct super_block *sb, ext4_group_t group, unsigned int nr) { + struct ext4_buddy e4b; + int ret; + while (nr-- > 0) { struct ext4_group_desc *gdp = ext4_get_group_desc(sb, group, NULL); @@ -3151,8 +3154,15 @@ void ext4_mb_prefetch_fini(struct super_block *sb, ext4_group_t group, ext4_free_group_clusters(sb, gdp) > 0 && !(ext4_has_group_desc_csum(sb) && (gdp->bg_flags & cpu_to_le16(EXT4_BG_BLOCK_UNINIT)))) { - if (ext4_mb_init_group(sb, group, GFP_NOFS)) + if (ext4_mb_frsp_on(sb)) { + ret = ext4_mb_load_allocator(sb, group, &e4b, + 0); + if (ret) + break; + ext4_mb_unload_allocator(&e4b); + } else if (ext4_mb_init_group(sb, group, GFP_NOFS)) { break; + } } } } -- 2.28.0.297.g1956fa8f8d-goog