diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2003-12-12 14:06:41 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2003-12-12 14:06:41 +0000 |
commit | 5e43f2c00c1ce3a9ee3ed9c2b5a9b32dabbb6e60 (patch) | |
tree | f2b700316c0ec296d18aee045fe098880602664b /kernel/file.c | |
parent | e4cf733e1c0a1a959f2f3c4f1951ad35da58011e (diff) | |
download | libfuse-5e43f2c00c1ce3a9ee3ed9c2b5a9b32dabbb6e60.tar.gz |
added fsync operation
Diffstat (limited to 'kernel/file.c')
-rw-r--r-- | kernel/file.c | 17 |
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) |