ext4: allocate buffer-cache for superblock in, non-movable area
Subsystems (2)
PATCH 2/2 ext4: allocate buffer-cache for superblock in, non-movable area
A buffer-cache for superblock is disturbing page migration, because the buffer-cache is not released until unmount. The buffer-cache must be allocated from non-movable area.
Signed-off-by Gioh Kim <[email protected]>
--- fs/ext4/super.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
fs/ext4/super.c +3 -3
@@ -3435,7 +3435,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) logical_sb_block = sb_block; } -if (!(bh =sb_bread (sb, logical_sb_block))) { +if (!(bh =sb_bread_nonmovable (sb, logical_sb_block))) {ext4_msg (sb,KERN_ERR ,"unable to read superblock" ); goto out_fail; }
@@ -3645,7 +3645,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)brelse (bh); logical_sb_block = sb_block *EXT4_MIN_BLOCK_SIZE ; offset =do_div (logical_sb_block, blocksize); - bh =sb_bread (sb, logical_sb_block); + bh =sb_bread_nonmovable (sb, logical_sb_block);if (!bh) {ext4_msg (sb,KERN_ERR ,"Can't read superblock on 2nd try" );
@@ -3867,7 +3867,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent)for (i =0 ; i < db_count; i++) { block =descriptor_loc (sb, logical_sb_block, i); - sbi->s_group_desc[i] =sb_bread (sb, block); + sbi->s_group_desc[i] =sb_bread_nonmovable (sb, block);if (!sbi->s_group_desc[i]) {ext4_msg (sb,KERN_ERR ,"can't read group descriptor %d" , i);
--
1.7.9.5