@@ -6358,43 +6358,12 @@ ext4_mb_free_metadata(handle_t *handle, struct ext4_buddy *e4b,
6358
6358
static void ext4_free_blocks_simple (struct inode * inode , ext4_fsblk_t block ,
6359
6359
unsigned long count )
6360
6360
{
6361
- struct buffer_head * bitmap_bh ;
6362
6361
struct super_block * sb = inode -> i_sb ;
6363
- struct ext4_group_desc * gdp ;
6364
- struct buffer_head * gdp_bh ;
6365
6362
ext4_group_t group ;
6366
6363
ext4_grpblk_t blkoff ;
6367
- int already_freed = 0 , err , i ;
6368
6364
6369
6365
ext4_get_group_no_and_offset (sb , block , & group , & blkoff );
6370
- bitmap_bh = ext4_read_block_bitmap (sb , group );
6371
- if (IS_ERR (bitmap_bh )) {
6372
- pr_warn ("Failed to read block bitmap\n" );
6373
- return ;
6374
- }
6375
- gdp = ext4_get_group_desc (sb , group , & gdp_bh );
6376
- if (!gdp )
6377
- goto err_out ;
6378
-
6379
- for (i = 0 ; i < count ; i ++ ) {
6380
- if (!mb_test_bit (blkoff + i , bitmap_bh -> b_data ))
6381
- already_freed ++ ;
6382
- }
6383
- mb_clear_bits (bitmap_bh -> b_data , blkoff , count );
6384
- err = ext4_handle_dirty_metadata (NULL , NULL , bitmap_bh );
6385
- if (err )
6386
- goto err_out ;
6387
- ext4_free_group_clusters_set (
6388
- sb , gdp , ext4_free_group_clusters (sb , gdp ) +
6389
- count - already_freed );
6390
- ext4_block_bitmap_csum_set (sb , gdp , bitmap_bh );
6391
- ext4_group_desc_csum_set (sb , group , gdp );
6392
- ext4_handle_dirty_metadata (NULL , NULL , gdp_bh );
6393
- sync_dirty_buffer (bitmap_bh );
6394
- sync_dirty_buffer (gdp_bh );
6395
-
6396
- err_out :
6397
- brelse (bitmap_bh );
6366
+ ext4_mb_mark_context (sb , false, group , blkoff , count );
6398
6367
}
6399
6368
6400
6369
/**
0 commit comments