aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/dir.c')
-rw-r--r--kernel/dir.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/dir.c b/kernel/dir.c
index aa31295..f0a5aa6 100644
--- a/kernel/dir.c
+++ b/kernel/dir.c
@@ -724,11 +724,16 @@ static int fuse_setattr(struct dentry *entry, struct iattr *attr)
{
struct inode *inode = entry->d_inode;
struct fuse_conn *fc = INO_FC(inode);
- struct fuse_req *req = fuse_get_request(fc);
+ struct fuse_req *req;
struct fuse_setattr_in inarg;
struct fuse_attr_out outarg;
int err;
-
+
+ /* FIXME: need to fix race between truncate and writepage */
+ if (attr->ia_valid & ATTR_SIZE)
+ fuse_sync_inode(inode);
+
+ req = fuse_get_request(fc);
if (!req)
return -ERESTARTSYS;