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

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.de


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 9a208ba5
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -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);
}
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);

+0 −5
Original line number Diff line number Diff line
@@ -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)
{
+4 −3
Original line number Diff line number Diff line
@@ -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);

+5 −0
Original line number Diff line number Diff line
@@ -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);