aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2008-04-30 03:54:43 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-30 11:29:50 -0400
commit5c5c5e51b26413d50a9efae2ca7d6c5c6cd453ac (patch)
tree4f78209ad05e429a0b89658e495fca9b9262d81d /fs/fuse/fuse_i.h
parentea9b9907b82a09bd1a708004454f7065de77c5b0 (diff)
fuse: update file size on short read
If the READ request returned a short count, then either - cached size is incorrect - filesystem is buggy, as short reads are only allowed on EOF So assume that the size is wrong and refresh it, so that cached read() doesn't zero fill the missing chunk. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/fuse/fuse_i.h')
-rw-r--r--fs/fuse/fuse_i.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 4b094fbc9c7f..934dd819a4ef 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -239,7 +239,10 @@ struct fuse_req {
239 } release; 239 } release;
240 struct fuse_init_in init_in; 240 struct fuse_init_in init_in;
241 struct fuse_init_out init_out; 241 struct fuse_init_out init_out;
242 struct fuse_read_in read_in; 242 struct {
243 struct fuse_read_in in;
244 u64 attr_ver;
245 } read;
243 struct { 246 struct {
244 struct fuse_write_in in; 247 struct fuse_write_in in;
245 struct fuse_write_out out; 248 struct fuse_write_out out;
@@ -637,3 +640,5 @@ void fuse_flush_writepages(struct inode *inode);
637 640
638void fuse_set_nowrite(struct inode *inode); 641void fuse_set_nowrite(struct inode *inode);
639void fuse_release_nowrite(struct inode *inode); 642void fuse_release_nowrite(struct inode *inode);
643
644u64 fuse_get_attr_version(struct fuse_conn *fc);