aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/inode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/fuse/inode.c')
-rw-r--r--fs/fuse/inode.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 0b578598c6ac..a8ce6dab60a0 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -201,7 +201,8 @@ void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr,
201 struct timespec old_mtime; 201 struct timespec old_mtime;
202 202
203 spin_lock(&fc->lock); 203 spin_lock(&fc->lock);
204 if (attr_version != 0 && fi->attr_version > attr_version) { 204 if ((attr_version != 0 && fi->attr_version > attr_version) ||
205 test_bit(FUSE_I_SIZE_UNSTABLE, &fi->state)) {
205 spin_unlock(&fc->lock); 206 spin_unlock(&fc->lock);
206 return; 207 return;
207 } 208 }
@@ -217,7 +218,7 @@ void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr,
217 bool inval = false; 218 bool inval = false;
218 219
219 if (oldsize != attr->size) { 220 if (oldsize != attr->size) {
220 truncate_pagecache(inode, oldsize, attr->size); 221 truncate_pagecache(inode, attr->size);
221 inval = true; 222 inval = true;
222 } else if (fc->auto_inval_data) { 223 } else if (fc->auto_inval_data) {
223 struct timespec new_mtime = { 224 struct timespec new_mtime = {
@@ -929,7 +930,7 @@ static int fuse_bdi_init(struct fuse_conn *fc, struct super_block *sb)
929 fc->bdi.name = "fuse"; 930 fc->bdi.name = "fuse";
930 fc->bdi.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE; 931 fc->bdi.ra_pages = (VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
931 /* fuse does it's own writeback accounting */ 932 /* fuse does it's own writeback accounting */
932 fc->bdi.capabilities = BDI_CAP_NO_ACCT_WB; 933 fc->bdi.capabilities = BDI_CAP_NO_ACCT_WB | BDI_CAP_STRICTLIMIT;
933 934
934 err = bdi_init(&fc->bdi); 935 err = bdi_init(&fc->bdi);
935 if (err) 936 if (err)