mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 01:04:19 +08:00
block: remove __sync_blockdev
[ Upstream commit 70164eb6cc
]
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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
4b7617ae04
commit
7877e7a5a5
11
block/bdev.c
11
block/bdev.c
@ -184,14 +184,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
|
||||
@ -199,7 +198,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);
|
||||
|
||||
|
@ -1999,6 +1999,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)
|
||||
{
|
||||
@ -2007,6 +2008,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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user