summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2009-02-18 14:20:05 -0800
committerSage Weil <sage@newdream.net>2009-02-18 14:20:05 -0800
commit0f05de942d39b213aa3b7390cf2f2497edfe8c25 (patch)
tree5549629806643ae3e4dd1499052b532fe836ec12
parent94c5031e6d264dce2efc43d264349b9527ea802f (diff)
downloadceph-0f05de942d39b213aa3b7390cf2f2497edfe8c25.tar.gz
kclient: set 'sync' flag for fsync
This will ensure that fsynced data is committed immediately by the OSDs.
-rw-r--r--src/kernel/file.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/kernel/file.c b/src/kernel/file.c
index dafe2a49140..41bfff5ddb4 100644
--- a/src/kernel/file.c
+++ b/src/kernel/file.c
@@ -430,10 +430,13 @@ out:
static int ceph_fsync(struct file *file, struct dentry *dentry, int datasync)
{
struct inode *inode = dentry->d_inode;
+ struct ceph_inode_info *ci = ceph_inode(inode);
int ret;
dout(10, "fsync on inode %p\n", inode);
+ atomic_inc(&ci->i_want_sync_writeout);
ret = write_inode_now(inode, 1);
+ atomic_dec(&ci->i_want_sync_writeout);
if (ret < 0)
return ret;
/*