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: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20211019062530.2174626-3-hch@lst.de Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Родитель
9a208ba5c9
Коммит
70164eb6cc
11
block/bdev.c
11
block/bdev.c
|
@ -185,14 +185,13 @@ int sb_min_blocksize(struct super_block *sb, int size)
|
|||
|
||||
EXPORT_SYMBOL(sb_min_blocksize);
|
||||
|
||||
int __sync_blockdev(struct block_device *bdev, int wait)
|
||||
int sync_blockdev_nowait(struct block_device *bdev)
|
||||
{
|
||||
if (!bdev)
|
||||
return 0;
|
||||
if (!wait)
|
||||
return filemap_flush(bdev->bd_inode->i_mapping);
|
||||
return filemap_write_and_wait(bdev->bd_inode->i_mapping);
|
||||
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
|
||||
|
@ -200,7 +199,9 @@ int __sync_blockdev(struct block_device *bdev, int wait)
|
|||
*/
|
||||
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);
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@ struct pipe_inode_info;
|
|||
#ifdef CONFIG_BLOCK
|
||||
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 emergency_thaw_bdev(struct super_block *sb);
|
||||
#else
|
||||
|
@ -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 *),
|
||||
void *arg)
|
||||
{
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
* High-level sync()-related operations
|
||||
*/
|
||||
|
||||
#include <linux/blkdev.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/file.h>
|
||||
#include <linux/fs.h>
|
||||
|
@ -45,7 +46,7 @@ int sync_filesystem(struct super_block *sb)
|
|||
/*
|
||||
* Do the filesystem syncing work. For simple filesystems
|
||||
* 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()
|
||||
* methods call sync_dirty_buffer() and thus effectively write one block
|
||||
* at a time.
|
||||
|
@ -53,14 +54,14 @@ int sync_filesystem(struct super_block *sb)
|
|||
writeback_inodes_sb(sb, WB_REASON_SYNC);
|
||||
if (sb->s_op->sync_fs)
|
||||
sb->s_op->sync_fs(sb, 0);
|
||||
ret = __sync_blockdev(sb->s_bdev, 0);
|
||||
ret = sync_blockdev_nowait(sb->s_bdev);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
sync_inodes_sb(sb);
|
||||
if (sb->s_op->sync_fs)
|
||||
sb->s_op->sync_fs(sb, 1);
|
||||
return __sync_blockdev(sb->s_bdev, 1);
|
||||
return sync_blockdev(sb->s_bdev);
|
||||
}
|
||||
EXPORT_SYMBOL(sync_filesystem);
|
||||
|
||||
|
|
|
@ -1266,6 +1266,7 @@ int truncate_bdev_range(struct block_device *bdev, fmode_t mode, loff_t lstart,
|
|||
#ifdef CONFIG_BLOCK
|
||||
void invalidate_bdev(struct block_device *bdev);
|
||||
int sync_blockdev(struct block_device *bdev);
|
||||
int sync_blockdev_nowait(struct block_device *bdev);
|
||||
#else
|
||||
static inline void invalidate_bdev(struct block_device *bdev)
|
||||
{
|
||||
|
@ -1274,6 +1275,10 @@ static inline int sync_blockdev(struct block_device *bdev)
|
|||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int sync_blockdev_nowait(struct block_device *bdev)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
int fsync_bdev(struct block_device *bdev);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче