Message ID | 20240222124555.2049140-3-yukuai1@huaweicloud.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fs & block: remove bdev->bd_inode | expand |
On Thu 22-02-24 20:45:38, Yu Kuai wrote: > From: Yu Kuai <yukuai3@huawei.com> > > Now that all filesystems stash the bdev file, it's ok to flush the file > mapping directly. > > Signed-off-by: Yu Kuai <yukuai3@huawei.com> Looks good. Feel free to add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > block/bdev.c | 8 -------- > fs/fat/inode.c | 2 +- > fs/ntfs3/inode.c | 2 +- > fs/sync.c | 9 ++++++--- > include/linux/blkdev.h | 5 ----- > 5 files changed, 8 insertions(+), 18 deletions(-) > > diff --git a/block/bdev.c b/block/bdev.c > index 726a2805a1ce..49dcff483289 100644 > --- a/block/bdev.c > +++ b/block/bdev.c > @@ -188,14 +188,6 @@ int sb_min_blocksize(struct super_block *sb, int size) > > EXPORT_SYMBOL(sb_min_blocksize); > > -int sync_blockdev_nowait(struct block_device *bdev) > -{ > - if (!bdev) > - return 0; > - return filemap_flush(bdev->bd_inode->i_mapping); > -} > -EXPORT_SYMBOL_GPL(sync_blockdev_nowait); > - > /* > * Write out and wait upon all the dirty data associated with a block > * device via its mapping. Does not take the superblock lock. > diff --git a/fs/fat/inode.c b/fs/fat/inode.c > index 5c813696d1ff..8527aef51841 100644 > --- a/fs/fat/inode.c > +++ b/fs/fat/inode.c > @@ -1945,7 +1945,7 @@ int fat_flush_inodes(struct super_block *sb, struct inode *i1, struct inode *i2) > if (!ret && i2) > ret = writeback_inode(i2); > if (!ret) > - ret = sync_blockdev_nowait(sb->s_bdev); > + ret = filemap_flush(sb->s_bdev_file->f_mapping); > return ret; > } > EXPORT_SYMBOL_GPL(fat_flush_inodes); > diff --git a/fs/ntfs3/inode.c b/fs/ntfs3/inode.c > index eb7a8c9fba01..3c4c878f6d77 100644 > --- a/fs/ntfs3/inode.c > +++ b/fs/ntfs3/inode.c > @@ -1081,7 +1081,7 @@ int ntfs_flush_inodes(struct super_block *sb, struct inode *i1, > if (!ret && i2) > ret = writeback_inode(i2); > if (!ret) > - ret = sync_blockdev_nowait(sb->s_bdev); > + ret = filemap_flush(sb->s_bdev_file->f_mapping); > return ret; > } > > diff --git a/fs/sync.c b/fs/sync.c > index dc725914e1ed..3a43062790d9 100644 > --- a/fs/sync.c > +++ b/fs/sync.c > @@ -57,9 +57,12 @@ int sync_filesystem(struct super_block *sb) > if (ret) > return ret; > } > - ret = sync_blockdev_nowait(sb->s_bdev); > - if (ret) > - return ret; > + > + if (sb->s_bdev_file) { > + ret = filemap_flush(sb->s_bdev_file->f_mapping); > + if (ret) > + return ret; > + } > > sync_inodes_sb(sb); > if (sb->s_op->sync_fs) { > diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h > index eb1f6eeaddc5..9e96811c8915 100644 > --- a/include/linux/blkdev.h > +++ b/include/linux/blkdev.h > @@ -1528,7 +1528,6 @@ unsigned int block_size(struct block_device *bdev); > void invalidate_bdev(struct block_device *bdev); > int sync_blockdev(struct block_device *bdev); > int sync_blockdev_range(struct block_device *bdev, loff_t lstart, loff_t lend); > -int sync_blockdev_nowait(struct block_device *bdev); > void sync_bdevs(bool wait); > void bdev_statx_dioalign(struct inode *inode, struct kstat *stat); > void printk_all_partitions(void); > @@ -1541,10 +1540,6 @@ static inline int sync_blockdev(struct block_device *bdev) > { > return 0; > } > -static inline int sync_blockdev_nowait(struct block_device *bdev) > -{ > - return 0; > -} > static inline void sync_bdevs(bool wait) > { > } > -- > 2.39.2 >
Looks good:
Reviewed-by: Christoph Hellwig <hch@lst.de>
diff --git a/block/bdev.c b/block/bdev.c index 726a2805a1ce..49dcff483289 100644 --- a/block/bdev.c +++ b/block/bdev.c @@ -188,14 +188,6 @@ int sb_min_blocksize(struct super_block *sb, int size) EXPORT_SYMBOL(sb_min_blocksize); -int sync_blockdev_nowait(struct block_device *bdev) -{ - if (!bdev) - return 0; - return filemap_flush(bdev->bd_inode->i_mapping); -} -EXPORT_SYMBOL_GPL(sync_blockdev_nowait); - /* * Write out and wait upon all the dirty data associated with a block * device via its mapping. Does not take the superblock lock. diff --git a/fs/fat/inode.c b/fs/fat/inode.c index 5c813696d1ff..8527aef51841 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -1945,7 +1945,7 @@ int fat_flush_inodes(struct super_block *sb, struct inode *i1, struct inode *i2) if (!ret && i2) ret = writeback_inode(i2); if (!ret) - ret = sync_blockdev_nowait(sb->s_bdev); + ret = filemap_flush(sb->s_bdev_file->f_mapping); return ret; } EXPORT_SYMBOL_GPL(fat_flush_inodes); diff --git a/fs/ntfs3/inode.c b/fs/ntfs3/inode.c index eb7a8c9fba01..3c4c878f6d77 100644 --- a/fs/ntfs3/inode.c +++ b/fs/ntfs3/inode.c @@ -1081,7 +1081,7 @@ int ntfs_flush_inodes(struct super_block *sb, struct inode *i1, if (!ret && i2) ret = writeback_inode(i2); if (!ret) - ret = sync_blockdev_nowait(sb->s_bdev); + ret = filemap_flush(sb->s_bdev_file->f_mapping); return ret; } diff --git a/fs/sync.c b/fs/sync.c index dc725914e1ed..3a43062790d9 100644 --- a/fs/sync.c +++ b/fs/sync.c @@ -57,9 +57,12 @@ int sync_filesystem(struct super_block *sb) if (ret) return ret; } - ret = sync_blockdev_nowait(sb->s_bdev); - if (ret) - return ret; + + if (sb->s_bdev_file) { + ret = filemap_flush(sb->s_bdev_file->f_mapping); + if (ret) + return ret; + } sync_inodes_sb(sb); if (sb->s_op->sync_fs) { diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index eb1f6eeaddc5..9e96811c8915 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -1528,7 +1528,6 @@ unsigned int block_size(struct block_device *bdev); void invalidate_bdev(struct block_device *bdev); int sync_blockdev(struct block_device *bdev); int sync_blockdev_range(struct block_device *bdev, loff_t lstart, loff_t lend); -int sync_blockdev_nowait(struct block_device *bdev); void sync_bdevs(bool wait); void bdev_statx_dioalign(struct inode *inode, struct kstat *stat); void printk_all_partitions(void); @@ -1541,10 +1540,6 @@ static inline int sync_blockdev(struct block_device *bdev) { return 0; } -static inline int sync_blockdev_nowait(struct block_device *bdev) -{ - return 0; -} static inline void sync_bdevs(bool wait) { }