From: Yu Kuai <yuku...@huawei.com>

Avoid to access bd_inode directly, prepare to remove bd_inode from
block_device.

Signed-off-by: Yu Kuai <yuku...@huawei.com>
Reviewed-by: Jan Kara <j...@suse.cz>
---
 fs/ext4/dir.c       | 6 ++----
 fs/ext4/ext4_jbd2.c | 6 +++---
 fs/ext4/super.c     | 3 +--
 3 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/fs/ext4/dir.c b/fs/ext4/dir.c
index 3985f8c33f95..64e35eb6a324 100644
--- a/fs/ext4/dir.c
+++ b/fs/ext4/dir.c
@@ -191,10 +191,8 @@ static int ext4_readdir(struct file *file, struct 
dir_context *ctx)
                        pgoff_t index = map.m_pblk >>
                                        (PAGE_SHIFT - inode->i_blkbits);
                        if (!ra_has_index(&file->f_ra, index))
-                               page_cache_sync_readahead(
-                                       sb->s_bdev->bd_inode->i_mapping,
-                                       &file->f_ra, file,
-                                       index, 1);
+                               bdev_sync_readahead(sb->s_bdev, &file->f_ra,
+                                                   file, index, 1);
                        file->f_ra.prev_pos = (loff_t)index << PAGE_SHIFT;
                        bh = ext4_bread(NULL, inode, map.m_lblk, 0);
                        if (IS_ERR(bh)) {
diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c
index d1a2e6624401..c1bf3a00fad9 100644
--- a/fs/ext4/ext4_jbd2.c
+++ b/fs/ext4/ext4_jbd2.c
@@ -206,7 +206,6 @@ static void ext4_journal_abort_handle(const char *caller, 
unsigned int line,
 
 static void ext4_check_bdev_write_error(struct super_block *sb)
 {
-       struct address_space *mapping = sb->s_bdev->bd_inode->i_mapping;
        struct ext4_sb_info *sbi = EXT4_SB(sb);
        int err;
 
@@ -216,9 +215,10 @@ static void ext4_check_bdev_write_error(struct super_block 
*sb)
         * we could read old data from disk and write it out again, which
         * may lead to on-disk filesystem inconsistency.
         */
-       if (errseq_check(&mapping->wb_err, READ_ONCE(sbi->s_bdev_wb_err))) {
+       if (bdev_wb_err_check(sb->s_bdev, READ_ONCE(sbi->s_bdev_wb_err))) {
                spin_lock(&sbi->s_bdev_wb_lock);
-               err = errseq_check_and_advance(&mapping->wb_err, 
&sbi->s_bdev_wb_err);
+               err = bdev_wb_err_check_and_advance(sb->s_bdev,
+                                                   &sbi->s_bdev_wb_err);
                spin_unlock(&sbi->s_bdev_wb_lock);
                if (err)
                        ext4_error_err(sb, -err,
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index a7935edbd7b1..25c3d2ac8559 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -5544,8 +5544,7 @@ static int __ext4_fill_super(struct fs_context *fc, 
struct super_block *sb)
         * used to detect the metadata async write error.
         */
        spin_lock_init(&sbi->s_bdev_wb_lock);
-       errseq_check_and_advance(&sb->s_bdev->bd_inode->i_mapping->wb_err,
-                                &sbi->s_bdev_wb_err);
+       bdev_wb_err_check_and_advance(sb->s_bdev, &sbi->s_bdev_wb_err);
        EXT4_SB(sb)->s_mount_state |= EXT4_ORPHAN_FS;
        ext4_orphan_cleanup(sb, es);
        EXT4_SB(sb)->s_mount_state &= ~EXT4_ORPHAN_FS;
-- 
2.39.2

Reply via email to