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 | ||
18 | struct file_operations minix_file_operations = { | |
19 | .llseek = generic_file_llseek, | |
20 | .read = generic_file_read, | |
21 | .write = generic_file_write, | |
22 | .mmap = generic_file_mmap, | |
23 | .fsync = minix_sync_file, | |
24 | .sendfile = generic_file_sendfile, | |
25 | }; | |
26 | ||
27 | struct inode_operations minix_file_inode_operations = { | |
28 | .truncate = minix_truncate, | |
29 | .getattr = minix_getattr, | |
30 | }; | |
31 | ||
32 | int minix_sync_file(struct file * file, struct dentry *dentry, int datasync) | |
33 | { | |
34 | struct inode *inode = dentry->d_inode; | |
35 | int err; | |
36 | ||
37 | err = sync_mapping_buffers(inode->i_mapping); | |
38 | if (!(inode->i_state & I_DIRTY)) | |
39 | return err; | |
40 | if (datasync && !(inode->i_state & I_DIRTY_DATASYNC)) | |
41 | return err; | |
42 | ||
43 | err |= minix_sync_inode(inode); | |
44 | return err ? -EIO : 0; | |
45 | } |