Skip to content

Commit

Permalink
block: remove __sync_blockdev
Browse files Browse the repository at this point in the history
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 <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
Christoph Hellwig authored and axboe committed Oct 22, 2021
1 parent 9a208ba commit 70164eb
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 13 deletions.
11 changes: 6 additions & 5 deletions block/bdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -185,22 +185,23 @@ 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
* device via its mapping. Does not take the superblock lock.
*/
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);

Expand Down
5 changes: 0 additions & 5 deletions fs/internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,13 @@ 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
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)
{
Expand Down
7 changes: 4 additions & 3 deletions fs/sync.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down Expand Up @@ -45,22 +46,22 @@ 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.
*/
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);

Expand Down
5 changes: 5 additions & 0 deletions include/linux/blkdev.h
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand All @@ -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);

Expand Down

0 comments on commit 70164eb

Please sign in to comment.