diff options
Diffstat (limited to 'fs/exofs/file.c')
-rw-r--r-- | fs/exofs/file.c | 20 |
1 files changed, 1 insertions, 19 deletions
diff --git a/fs/exofs/file.c b/fs/exofs/file.c index 68cb23e3bb98..45ca323d8363 100644 --- a/fs/exofs/file.c +++ b/fs/exofs/file.c | |||
@@ -45,26 +45,8 @@ static int exofs_release_file(struct inode *inode, struct file *filp) | |||
45 | static int exofs_file_fsync(struct file *filp, int datasync) | 45 | static int exofs_file_fsync(struct file *filp, int datasync) |
46 | { | 46 | { |
47 | int ret; | 47 | int ret; |
48 | struct inode *inode = filp->f_mapping->host; | ||
49 | struct writeback_control wbc = { | ||
50 | .sync_mode = WB_SYNC_ALL, | ||
51 | .nr_to_write = 0, /* metadata-only; caller takes care of data */ | ||
52 | }; | ||
53 | struct super_block *sb; | ||
54 | |||
55 | if (!(inode->i_state & I_DIRTY)) | ||
56 | return 0; | ||
57 | if (datasync && !(inode->i_state & I_DIRTY_DATASYNC)) | ||
58 | return 0; | ||
59 | |||
60 | ret = sync_inode(inode, &wbc); | ||
61 | |||
62 | /* This is a good place to write the sb */ | ||
63 | /* TODO: Sechedule an sb-sync on create */ | ||
64 | sb = inode->i_sb; | ||
65 | if (sb->s_dirt) | ||
66 | exofs_sync_fs(sb, 1); | ||
67 | 48 | ||
49 | ret = sync_inode_metadata(filp->f_mapping->host, 1); | ||
68 | return ret; | 50 | return ret; |
69 | } | 51 | } |
70 | 52 | ||