[PATCH] add a vfs_permission helper
[safe/jmp/linux-2.6] / include / linux / fuse.h
index bf564ed..b76b558 100644 (file)
@@ -14,7 +14,7 @@
 #define FUSE_KERNEL_VERSION 7
 
 /** Minor version number of this interface */
-#define FUSE_KERNEL_MINOR_VERSION 1
+#define FUSE_KERNEL_MINOR_VERSION 3
 
 /** The node ID of the root inode */
 #define FUSE_ROOT_ID 1
@@ -25,6 +25,9 @@
 /** The minor number of the fuse character device */
 #define FUSE_MINOR 229
 
+/* Make sure all structures are padded to 64bit boundary, so 32bit
+   userspace works under 64bit kernels */
+
 struct fuse_attr {
        __u64   ino;
        __u64   size;
@@ -58,7 +61,16 @@ struct fuse_kstatfs {
 #define FATTR_SIZE     (1 << 3)
 #define FATTR_ATIME    (1 << 4)
 #define FATTR_MTIME    (1 << 5)
-#define FATTR_CTIME    (1 << 6)
+#define FATTR_FH       (1 << 6)
+
+/**
+ * Flags returned by the OPEN request
+ *
+ * FOPEN_DIRECT_IO: bypass page cache for this open file
+ * FOPEN_KEEP_CACHE: don't invalidate the data cache on open
+ */
+#define FOPEN_DIRECT_IO                (1 << 0)
+#define FOPEN_KEEP_CACHE       (1 << 1)
 
 enum fuse_opcode {
        FUSE_LOOKUP        = 1,
@@ -67,7 +79,6 @@ enum fuse_opcode {
        FUSE_SETATTR       = 4,
        FUSE_READLINK      = 5,
        FUSE_SYMLINK       = 6,
-       FUSE_GETDIR        = 7,
        FUSE_MKNOD         = 8,
        FUSE_MKDIR         = 9,
        FUSE_UNLINK        = 10,
@@ -85,7 +96,13 @@ enum fuse_opcode {
        FUSE_LISTXATTR     = 23,
        FUSE_REMOVEXATTR   = 24,
        FUSE_FLUSH         = 25,
-       FUSE_INIT          = 26
+       FUSE_INIT          = 26,
+       FUSE_OPENDIR       = 27,
+       FUSE_READDIR       = 28,
+       FUSE_RELEASEDIR    = 29,
+       FUSE_FSYNCDIR      = 30,
+       FUSE_ACCESS        = 34,
+       FUSE_CREATE        = 35
 };
 
 /* Conservative buffer size for the client */
@@ -117,10 +134,6 @@ struct fuse_attr_out {
        struct fuse_attr attr;
 };
 
-struct fuse_getdir_out {
-       __u32   fd;
-};
-
 struct fuse_mknod_in {
        __u32   mode;
        __u32   rdev;
@@ -128,6 +141,7 @@ struct fuse_mknod_in {
 
 struct fuse_mkdir_in {
        __u32   mode;
+       __u32   padding;
 };
 
 struct fuse_rename_in {
@@ -140,32 +154,51 @@ struct fuse_link_in {
 
 struct fuse_setattr_in {
        __u32   valid;
-       struct fuse_attr attr;
+       __u32   padding;
+       __u64   fh;
+       __u64   size;
+       __u64   unused1;
+       __u64   atime;
+       __u64   mtime;
+       __u64   unused2;
+       __u32   atimensec;
+       __u32   mtimensec;
+       __u32   unused3;
+       __u32   mode;
+       __u32   unused4;
+       __u32   uid;
+       __u32   gid;
+       __u32   unused5;
 };
 
 struct fuse_open_in {
        __u32   flags;
+       __u32   mode;
 };
 
 struct fuse_open_out {
        __u64   fh;
        __u32   open_flags;
+       __u32   padding;
 };
 
 struct fuse_release_in {
        __u64   fh;
        __u32   flags;
+       __u32   padding;
 };
 
 struct fuse_flush_in {
        __u64   fh;
        __u32   flush_flags;
+       __u32   padding;
 };
 
 struct fuse_read_in {
        __u64   fh;
        __u64   offset;
        __u32   size;
+       __u32   padding;
 };
 
 struct fuse_write_in {
@@ -177,6 +210,7 @@ struct fuse_write_in {
 
 struct fuse_write_out {
        __u32   size;
+       __u32   padding;
 };
 
 struct fuse_statfs_out {
@@ -186,6 +220,7 @@ struct fuse_statfs_out {
 struct fuse_fsync_in {
        __u64   fh;
        __u32   fsync_flags;
+       __u32   padding;
 };
 
 struct fuse_setxattr_in {
@@ -195,10 +230,17 @@ struct fuse_setxattr_in {
 
 struct fuse_getxattr_in {
        __u32   size;
+       __u32   padding;
 };
 
 struct fuse_getxattr_out {
        __u32   size;
+       __u32   padding;
+};
+
+struct fuse_access_in {
+       __u32   mask;
+       __u32   padding;
 };
 
 struct fuse_init_in_out {
@@ -214,6 +256,7 @@ struct fuse_in_header {
        __u32   uid;
        __u32   gid;
        __u32   pid;
+       __u32   padding;
 };
 
 struct fuse_out_header {