Commit 70164eb6 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

block: remove __sync_blockdev

Instead offer a new sync_blockdev_nowait helper for the !wait case.
This new helper is exported as it will grow modular callers in a bit.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20211019062530.2174626-3-hch@lst.deSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 9a208ba5
...@@ -185,14 +185,13 @@ int sb_min_blocksize(struct super_block *sb, int size) ...@@ -185,14 +185,13 @@ int sb_min_blocksize(struct super_block *sb, int size)
EXPORT_SYMBOL(sb_min_blocksize); EXPORT_SYMBOL(sb_min_blocksize);
int __sync_blockdev(struct block_device *bdev, int wait) int sync_blockdev_nowait(struct block_device *bdev)
{ {
if (!bdev) if (!bdev)
return 0; return 0;
if (!wait)
return filemap_flush(bdev->bd_inode->i_mapping); return filemap_flush(bdev->bd_inode->i_mapping);
return filemap_write_and_wait(bdev->bd_inode->i_mapping);
} }
EXPORT_SYMBOL_GPL(sync_blockdev_nowait);
/* /*
* Write out and wait upon all the dirty data associated with a block * Write out and wait upon all the dirty data associated with a block
...@@ -200,7 +199,9 @@ int __sync_blockdev(struct block_device *bdev, int wait) ...@@ -200,7 +199,9 @@ int __sync_blockdev(struct block_device *bdev, int wait)
*/ */
int sync_blockdev(struct block_device *bdev) int sync_blockdev(struct block_device *bdev)
{ {
return __sync_blockdev(bdev, 1); if (!bdev)
return 0;
return filemap_write_and_wait(bdev->bd_inode->i_mapping);
} }
EXPORT_SYMBOL(sync_blockdev); EXPORT_SYMBOL(sync_blockdev);
......
...@@ -23,7 +23,6 @@ struct pipe_inode_info; ...@@ -23,7 +23,6 @@ struct pipe_inode_info;
#ifdef CONFIG_BLOCK #ifdef CONFIG_BLOCK
extern void __init bdev_cache_init(void); extern void __init bdev_cache_init(void);
extern int __sync_blockdev(struct block_device *bdev, int wait);
void iterate_bdevs(void (*)(struct block_device *, void *), void *); void iterate_bdevs(void (*)(struct block_device *, void *), void *);
void emergency_thaw_bdev(struct super_block *sb); void emergency_thaw_bdev(struct super_block *sb);
#else #else
...@@ -31,10 +30,6 @@ static inline void bdev_cache_init(void) ...@@ -31,10 +30,6 @@ static inline void bdev_cache_init(void)
{ {
} }
static inline int __sync_blockdev(struct block_device *bdev, int wait)
{
return 0;
}
static inline void iterate_bdevs(void (*f)(struct block_device *, void *), static inline void iterate_bdevs(void (*f)(struct block_device *, void *),
void *arg) void *arg)
{ {
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
* High-level sync()-related operations * High-level sync()-related operations
*/ */
#include <linux/blkdev.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/file.h> #include <linux/file.h>
#include <linux/fs.h> #include <linux/fs.h>
...@@ -45,7 +46,7 @@ int sync_filesystem(struct super_block *sb) ...@@ -45,7 +46,7 @@ int sync_filesystem(struct super_block *sb)
/* /*
* Do the filesystem syncing work. For simple filesystems * Do the filesystem syncing work. For simple filesystems
* writeback_inodes_sb(sb) just dirties buffers with inodes so we have * writeback_inodes_sb(sb) just dirties buffers with inodes so we have
* to submit I/O for these buffers via __sync_blockdev(). This also * to submit I/O for these buffers via sync_blockdev(). This also
* speeds up the wait == 1 case since in that case write_inode() * speeds up the wait == 1 case since in that case write_inode()
* methods call sync_dirty_buffer() and thus effectively write one block * methods call sync_dirty_buffer() and thus effectively write one block
* at a time. * at a time.
...@@ -53,14 +54,14 @@ int sync_filesystem(struct super_block *sb) ...@@ -53,14 +54,14 @@ int sync_filesystem(struct super_block *sb)
writeback_inodes_sb(sb, WB_REASON_SYNC); writeback_inodes_sb(sb, WB_REASON_SYNC);
if (sb->s_op->sync_fs) if (sb->s_op->sync_fs)
sb->s_op->sync_fs(sb, 0); sb->s_op->sync_fs(sb, 0);
ret = __sync_blockdev(sb->s_bdev, 0); ret = sync_blockdev_nowait(sb->s_bdev);
if (ret < 0) if (ret < 0)
return ret; return ret;
sync_inodes_sb(sb); sync_inodes_sb(sb);
if (sb->s_op->sync_fs) if (sb->s_op->sync_fs)
sb->s_op->sync_fs(sb, 1); sb->s_op->sync_fs(sb, 1);
return __sync_blockdev(sb->s_bdev, 1); return sync_blockdev(sb->s_bdev);
} }
EXPORT_SYMBOL(sync_filesystem); EXPORT_SYMBOL(sync_filesystem);
......
...@@ -1266,6 +1266,7 @@ int truncate_bdev_range(struct block_device *bdev, fmode_t mode, loff_t lstart, ...@@ -1266,6 +1266,7 @@ int truncate_bdev_range(struct block_device *bdev, fmode_t mode, loff_t lstart,
#ifdef CONFIG_BLOCK #ifdef CONFIG_BLOCK
void invalidate_bdev(struct block_device *bdev); void invalidate_bdev(struct block_device *bdev);
int sync_blockdev(struct block_device *bdev); int sync_blockdev(struct block_device *bdev);
int sync_blockdev_nowait(struct block_device *bdev);
#else #else
static inline void invalidate_bdev(struct block_device *bdev) static inline void invalidate_bdev(struct block_device *bdev)
{ {
...@@ -1274,6 +1275,10 @@ static inline int sync_blockdev(struct block_device *bdev) ...@@ -1274,6 +1275,10 @@ static inline int sync_blockdev(struct block_device *bdev)
{ {
return 0; return 0;
} }
static inline int sync_blockdev_nowait(struct block_device *bdev)
{
return 0;
}
#endif #endif
int fsync_bdev(struct block_device *bdev); int fsync_bdev(struct block_device *bdev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment