diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 1ea777a66c8cbb79cb913b7c782d325de80924a5..03c660459d3112295a9fc7e5a7a8e4aab3038e31 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -2727,6 +2727,7 @@ extern void ext4_read_bh_nowait(struct buffer_head *bh, int op_flags, extern int ext4_read_bh(struct buffer_head *bh, int op_flags, bh_end_io_t *end_io); extern int ext4_read_bh_lock(struct buffer_head *bh, int op_flags, bool wait); +extern void ext4_sb_breadahead_unmovable(struct super_block *sb, sector_t block); extern int ext4_seq_options_show(struct seq_file *seq, void *offset); extern int ext4_calculate_overhead(struct super_block *sb); extern void ext4_superblock_csum_set(struct super_block *sb); diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index b27dcd80caf066ecb52a70fb472b767c9457b9f4..1761ba640a26d5201dcd16ce39116b25c15eed4a 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4707,7 +4707,7 @@ static int __ext4_get_inode_loc(struct inode *inode, if (end > table) end = table; while (b <= end) - sb_breadahead_unmovable(sb, b++); + ext4_sb_breadahead_unmovable(sb, b++); } /* diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 24dc9137185ffe975bca35fc74c636ae6f889b60..ec9df6f427688e602eefeeb1d0f7df25896db4b0 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -236,6 +236,16 @@ ext4_sb_bread(struct super_block *sb, sector_t block, int op_flags) return bh; } +void ext4_sb_breadahead_unmovable(struct super_block *sb, sector_t block) +{ + struct buffer_head *bh = sb_getblk_gfp(sb, block, 0); + + if (likely(bh)) { + ext4_read_bh_lock(bh, REQ_RAHEAD, false); + brelse(bh); + } +} + static int ext4_verify_csum_type(struct super_block *sb, struct ext4_super_block *es) { @@ -4374,7 +4384,7 @@ static int ext4_fill_super(struct super_block *sb, void *data, int silent) /* Pre-read the descriptors into the buffer cache */ for (i = 0; i < db_count; i++) { block = descriptor_loc(sb, logical_sb_block, i); - sb_breadahead_unmovable(sb, block); + ext4_sb_breadahead_unmovable(sb, block); } for (i = 0; i < db_count; i++) {