aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2007-10-18 06:07:05 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-10-18 17:37:31 -0400
commit0e9663ee452ffce0d429656ebbcfe69417a30e92 (patch)
treea72825f122c9e38d4adc42ebcfd127f366da4a0f /include/linux
parentf33321141b273d60cbb3a8f56a5489baad82ba5e (diff)
fuse: add blksize field to fuse_attr
There are cases when the filesystem will be passed the buffer from a single read or write call, namely: 1) in 'direct-io' mode (not O_DIRECT), read/write requests don't go through the page cache, but go directly to the userspace fs 2) currently buffered writes are done with single page requests, but if Nick's ->perform_write() patch goes it, it will be possible to do larger write requests. But only if the original write() was also bigger than a page. In these cases the filesystem might want to give a hint to the app about the optimal I/O size. Allow the userspace filesystem to supply a blksize value to be returned by stat() and friends. If the field is zero, it defaults to the old PAGE_CACHE_SIZE value. 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 'include/linux')
-rw-r--r--include/linux/fuse.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/fuse.h b/include/linux/fuse.h
index 7d4fa5b25b87..d0c437028c80 100644
--- a/include/linux/fuse.h
+++ b/include/linux/fuse.h
@@ -15,6 +15,7 @@
15 * - new fuse_getattr_in input argument of GETATTR 15 * - new fuse_getattr_in input argument of GETATTR
16 * - add lk_flags in fuse_lk_in 16 * - add lk_flags in fuse_lk_in
17 * - add lock_owner field to fuse_setattr_in, fuse_read_in and fuse_write_in 17 * - add lock_owner field to fuse_setattr_in, fuse_read_in and fuse_write_in
18 * - add blksize field to fuse_attr
18 */ 19 */
19 20
20#include <asm/types.h> 21#include <asm/types.h>
@@ -53,6 +54,8 @@ struct fuse_attr {
53 __u32 uid; 54 __u32 uid;
54 __u32 gid; 55 __u32 gid;
55 __u32 rdev; 56 __u32 rdev;
57 __u32 blksize;
58 __u32 padding;
56}; 59};
57 60
58struct fuse_kstatfs { 61struct fuse_kstatfs {
@@ -177,6 +180,8 @@ enum fuse_opcode {
177/* The read buffer is required to be at least 8k, but may be much larger */ 180/* The read buffer is required to be at least 8k, but may be much larger */
178#define FUSE_MIN_READ_BUFFER 8192 181#define FUSE_MIN_READ_BUFFER 8192
179 182
183#define FUSE_COMPAT_ENTRY_OUT_SIZE 120
184
180struct fuse_entry_out { 185struct fuse_entry_out {
181 __u64 nodeid; /* Inode ID */ 186 __u64 nodeid; /* Inode ID */
182 __u64 generation; /* Inode generation: nodeid:gen must 187 __u64 generation; /* Inode generation: nodeid:gen must
@@ -198,6 +203,8 @@ struct fuse_getattr_in {
198 __u64 fh; 203 __u64 fh;
199}; 204};
200 205
206#define FUSE_COMPAT_ATTR_OUT_SIZE 96
207
201struct fuse_attr_out { 208struct fuse_attr_out {
202 __u64 attr_valid; /* Cache timeout for the attributes */ 209 __u64 attr_valid; /* Cache timeout for the attributes */
203 __u32 attr_valid_nsec; 210 __u32 attr_valid_nsec;