1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26#include <linux/fs.h>
27#include <linux/ufs_fs.h>
28#include <linux/buffer_head.h>
29
30#include "ufs.h"
31
32
33static int ufs_sync_file(struct file *file, struct dentry *dentry, int datasync)
34{
35 struct inode *inode = dentry->d_inode;
36 int err;
37 int ret;
38
39 ret = sync_mapping_buffers(inode->i_mapping);
40 if (!(inode->i_state & I_DIRTY))
41 return ret;
42 if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
43 return ret;
44
45 err = ufs_sync_inode(inode);
46 if (ret == 0)
47 ret = err;
48 return ret;
49}
50
51
52
53
54
55
56
57const struct file_operations ufs_file_operations = {
58 .llseek = generic_file_llseek,
59 .read = do_sync_read,
60 .aio_read = generic_file_aio_read,
61 .write = do_sync_write,
62 .aio_write = generic_file_aio_write,
63 .mmap = generic_file_mmap,
64 .open = generic_file_open,
65 .fsync = ufs_sync_file,
66 .splice_read = generic_file_splice_read,
67};
68