Instead provide a sync_blockdev_nowait helper for sync_filesystem.
Signed-off-by: Christoph Hellwig <hch@lst.de>
}
module_init(blkdev_init);
-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);
}
/*
*/
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);
#ifdef CONFIG_BLOCK
extern void __init bdev_cache_init(void);
-extern int __sync_blockdev(struct block_device *bdev, int wait);
+int sync_blockdev_nowait(struct block_device *bdev);
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)
+static inline int sync_blockdev_nowait(struct block_device *bdev)
{
return 0;
}
/*
* For simple filesystems writeback_inodes_sb(sb) just dirties buffers
* with inodes so we have to submit IO for these buffers via
- * __sync_blockdev(). This also speeds up the wait == 1 case since in
- * that case write_inode() functions do sync_dirty_buffer() and thus
+ * sync_blockdev_nowait(). This also speeds up the wait == 1 case since
+ * in that case write_inode() functions do 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);