]>
Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* |
2 | * linux/fs/minix/file.c | |
3 | * | |
4 | * Copyright (C) 1991, 1992 Linus Torvalds | |
5 | * | |
6 | * minix regular file handling primitives | |
7 | */ | |
8 | ||
9 | #include <linux/buffer_head.h> /* for fsync_inode_buffers() */ | |
10 | #include "minix.h" | |
11 | ||
12 | /* | |
13 | * We have mostly NULLs here: the current defaults are OK for | |
14 | * the minix filesystem. | |
15 | */ | |
16 | int minix_sync_file(struct file *, struct dentry *, int); | |
17 | ||
4b6f5d20 | 18 | const struct file_operations minix_file_operations = { |
1da177e4 | 19 | .llseek = generic_file_llseek, |
543ade1f BP |
20 | .read = do_sync_read, |
21 | .aio_read = generic_file_aio_read, | |
22 | .write = do_sync_write, | |
23 | .aio_write = generic_file_aio_write, | |
1da177e4 LT |
24 | .mmap = generic_file_mmap, |
25 | .fsync = minix_sync_file, | |
5ffc4ef4 | 26 | .splice_read = generic_file_splice_read, |
1da177e4 LT |
27 | }; |
28 | ||
92e1d5be | 29 | const struct inode_operations minix_file_inode_operations = { |
1da177e4 LT |
30 | .truncate = minix_truncate, |
31 | .getattr = minix_getattr, | |
32 | }; | |
33 | ||
34 | int minix_sync_file(struct file * file, struct dentry *dentry, int datasync) | |
35 | { | |
36 | struct inode *inode = dentry->d_inode; | |
37 | int err; | |
38 | ||
39 | err = sync_mapping_buffers(inode->i_mapping); | |
40 | if (!(inode->i_state & I_DIRTY)) | |
41 | return err; | |
42 | if (datasync && !(inode->i_state & I_DIRTY_DATASYNC)) | |
43 | return err; | |
44 | ||
45 | err |= minix_sync_inode(inode); | |
46 | return err ? -EIO : 0; | |
47 | } |