diff options
| author | Miklos Szeredi <mszeredi@suse.cz> | 2007-10-18 06:07:05 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-10-18 17:37:31 -0400 |
| commit | 0e9663ee452ffce0d429656ebbcfe69417a30e92 (patch) | |
| tree | a72825f122c9e38d4adc42ebcfd127f366da4a0f /include/linux/fuse.h | |
| parent | f33321141b273d60cbb3a8f56a5489baad82ba5e (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/fuse.h')
| -rw-r--r-- | include/linux/fuse.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/linux/fuse.h b/include/linux/fuse.h index 7d4fa5b25b..d0c437028c 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 | ||
| 58 | struct fuse_kstatfs { | 61 | struct 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 | |||
| 180 | struct fuse_entry_out { | 185 | struct 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 | |||
| 201 | struct fuse_attr_out { | 208 | struct 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; |
