aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/file.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2003-12-12 14:06:41 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2003-12-12 14:06:41 +0000
commit5e43f2c00c1ce3a9ee3ed9c2b5a9b32dabbb6e60 (patch)
treef2b700316c0ec296d18aee045fe098880602664b /kernel/file.c
parente4cf733e1c0a1a959f2f3c4f1951ad35da58011e (diff)
downloadlibfuse-5e43f2c00c1ce3a9ee3ed9c2b5a9b32dabbb6e60.tar.gz
added fsync operation
Diffstat (limited to 'kernel/file.c')
-rw-r--r--kernel/file.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/kernel/file.c b/kernel/file.c
index ca4440c..11e7bc0 100644
--- a/kernel/file.c
+++ b/kernel/file.c
@@ -74,7 +74,22 @@ static int fuse_release(struct inode *inode, struct file *file)
static int fuse_fsync(struct file *file, struct dentry *de, int datasync)
{
- return 0;
+ struct inode *inode = de->d_inode;
+ struct fuse_conn *fc = INO_FC(inode);
+ struct fuse_in in = FUSE_IN_INIT;
+ struct fuse_out out = FUSE_OUT_INIT;
+ struct fuse_fsync_in inarg;
+
+ memset(&inarg, 0, sizeof(inarg));
+ inarg.datasync = datasync;
+
+ in.h.opcode = FUSE_FSYNC;
+ in.h.ino = inode->i_ino;
+ in.numargs = 1;
+ in.args[0].size = sizeof(inarg);
+ in.args[0].value = &inarg;
+ request_send(fc, &in, &out);
+ return out.h.error;
}
static int fuse_readpage(struct file *file, struct page *page)