diff options
-rw-r--r-- | drivers/char/raw.c | 1 | ||||
-rw-r--r-- | fs/block_dev.c | 3 | ||||
-rw-r--r-- | include/linux/fs.h | 1 |
3 files changed, 4 insertions, 1 deletions
diff --git a/drivers/char/raw.c b/drivers/char/raw.c index 64acd05f71c..9abc3a19d53 100644 --- a/drivers/char/raw.c +++ b/drivers/char/raw.c @@ -247,6 +247,7 @@ static const struct file_operations raw_fops = { .aio_read = generic_file_aio_read, .write = do_sync_write, .aio_write = blkdev_aio_write, + .fsync = block_fsync, .open = raw_open, .release= raw_release, .ioctl = raw_ioctl, diff --git a/fs/block_dev.c b/fs/block_dev.c index 34e2d203376..9b9e3dc5692 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -404,7 +404,7 @@ static loff_t block_llseek(struct file *file, loff_t offset, int origin) * NULL first argument is nfsd_sync_dir() and that's not a directory. */ -static int block_fsync(struct file *filp, struct dentry *dentry, int datasync) +int block_fsync(struct file *filp, struct dentry *dentry, int datasync) { return sync_blockdev(I_BDEV(filp->f_mapping->host)); } @@ -423,6 +423,7 @@ static struct inode *bdev_alloc_inode(struct super_block *sb) return NULL; return &ei->vfs_inode; } +EXPORT_SYMBOL(block_fsync); static void bdev_destroy_inode(struct inode *inode) { diff --git a/include/linux/fs.h b/include/linux/fs.h index 692a3eee345..9b6780526f6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2225,6 +2225,7 @@ extern int generic_segment_checks(const struct iovec *iov, /* fs/block_dev.c */ extern ssize_t blkdev_aio_write(struct kiocb *iocb, const struct iovec *iov, unsigned long nr_segs, loff_t pos); +extern int block_fsync(struct file *filp, struct dentry *dentry, int datasync); /* fs/splice.c */ extern ssize_t generic_file_splice_read(struct file *, loff_t *, |