aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2005-09-09 16:10:28 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-09 17:03:45 -0400
commite5e5558e923f35839108a12718494ecb73fb782f (patch)
treec410d6826e9df13f7ea9e382a26589b66ec0989c /include/linux
parent334f485df85ac7736ebe14940bf0a059c5f26d7d (diff)
[PATCH] FUSE - read-only operations
This patch adds the read-only filesystem operations of FUSE. This contains the following files: o dir.c - directory, symlink and file-inode operations The following operations are added: o lookup o getattr o readlink o follow_link o directory open o readdir o directory release o permission o dentry revalidate o statfs Signed-off-by: Miklos Szeredi <miklos@szeredi.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/fuse.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/include/linux/fuse.h b/include/linux/fuse.h
index a1aebd7104c4..21b9ba16f8d5 100644
--- a/include/linux/fuse.h
+++ b/include/linux/fuse.h
@@ -42,13 +42,61 @@ struct fuse_attr {
42 __u32 rdev; 42 __u32 rdev;
43}; 43};
44 44
45struct fuse_kstatfs {
46 __u64 blocks;
47 __u64 bfree;
48 __u64 bavail;
49 __u64 files;
50 __u64 ffree;
51 __u32 bsize;
52 __u32 namelen;
53};
54
45enum fuse_opcode { 55enum fuse_opcode {
56 FUSE_LOOKUP = 1,
57 FUSE_FORGET = 2, /* no reply */
58 FUSE_GETATTR = 3,
59 FUSE_READLINK = 5,
60 FUSE_GETDIR = 7,
61 FUSE_STATFS = 17,
46 FUSE_INIT = 26 62 FUSE_INIT = 26
47}; 63};
48 64
49/* Conservative buffer size for the client */ 65/* Conservative buffer size for the client */
50#define FUSE_MAX_IN 8192 66#define FUSE_MAX_IN 8192
51 67
68#define FUSE_NAME_MAX 1024
69
70struct fuse_entry_out {
71 __u64 nodeid; /* Inode ID */
72 __u64 generation; /* Inode generation: nodeid:gen must
73 be unique for the fs's lifetime */
74 __u64 entry_valid; /* Cache timeout for the name */
75 __u64 attr_valid; /* Cache timeout for the attributes */
76 __u32 entry_valid_nsec;
77 __u32 attr_valid_nsec;
78 struct fuse_attr attr;
79};
80
81struct fuse_forget_in {
82 __u64 version;
83};
84
85struct fuse_attr_out {
86 __u64 attr_valid; /* Cache timeout for the attributes */
87 __u32 attr_valid_nsec;
88 __u32 dummy;
89 struct fuse_attr attr;
90};
91
92struct fuse_getdir_out {
93 __u32 fd;
94};
95
96struct fuse_statfs_out {
97 struct fuse_kstatfs st;
98};
99
52struct fuse_init_in_out { 100struct fuse_init_in_out {
53 __u32 major; 101 __u32 major;
54 __u32 minor; 102 __u32 minor;
@@ -70,3 +118,15 @@ struct fuse_out_header {
70 __u64 unique; 118 __u64 unique;
71}; 119};
72 120
121struct fuse_dirent {
122 __u64 ino;
123 __u64 off;
124 __u32 namelen;
125 __u32 type;
126 char name[0];
127};
128
129#define FUSE_NAME_OFFSET ((unsigned) ((struct fuse_dirent *) 0)->name)
130#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
131#define FUSE_DIRENT_SIZE(d) \
132 FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)