aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ufs/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ufs/file.c')
-rw-r--r--fs/ufs/file.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/fs/ufs/file.c b/fs/ufs/file.c
index 312fd3f86313..0e5001512a9d 100644
--- a/fs/ufs/file.c
+++ b/fs/ufs/file.c
@@ -25,6 +25,26 @@
25 25
26#include <linux/fs.h> 26#include <linux/fs.h>
27#include <linux/ufs_fs.h> 27#include <linux/ufs_fs.h>
28#include <linux/buffer_head.h> /* for sync_mapping_buffers() */
29
30static int ufs_sync_file(struct file *file, struct dentry *dentry, int datasync)
31{
32 struct inode *inode = dentry->d_inode;
33 int err;
34 int ret;
35
36 ret = sync_mapping_buffers(inode->i_mapping);
37 if (!(inode->i_state & I_DIRTY))
38 return ret;
39 if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
40 return ret;
41
42 err = ufs_sync_inode(inode);
43 if (ret == 0)
44 ret = err;
45 return ret;
46}
47
28 48
29/* 49/*
30 * We have mostly NULL's here: the current defaults are ok for 50 * We have mostly NULL's here: the current defaults are ok for
@@ -37,6 +57,7 @@ const struct file_operations ufs_file_operations = {
37 .write = generic_file_write, 57 .write = generic_file_write,
38 .mmap = generic_file_mmap, 58 .mmap = generic_file_mmap,
39 .open = generic_file_open, 59 .open = generic_file_open,
60 .fsync = ufs_sync_file,
40 .sendfile = generic_file_sendfile, 61 .sendfile = generic_file_sendfile,
41}; 62};
42 63