Merge branch 'post-2.6.15' of git://brick.kernel.dk/data/git/linux-2.6-block
[sfrench/cifs-2.6.git] / include / linux / fuse.h
index 6e91c9a3a0b6de5858e3d18f879ee8d62a6141c3..528959c52f1b6fd5f9f3f9722f22cfe6616876e1 100644 (file)
@@ -14,7 +14,7 @@
 #define FUSE_KERNEL_VERSION 7
 
 /** Minor version number of this interface */
-#define FUSE_KERNEL_MINOR_VERSION 3
+#define FUSE_KERNEL_MINOR_VERSION 5
 
 /** The node ID of the root inode */
 #define FUSE_ROOT_ID 1
@@ -53,6 +53,9 @@ struct fuse_kstatfs {
        __u64   ffree;
        __u32   bsize;
        __u32   namelen;
+       __u32   frsize;
+       __u32   padding;
+       __u32   spare[6];
 };
 
 #define FATTR_MODE     (1 << 0)
@@ -61,6 +64,7 @@ struct fuse_kstatfs {
 #define FATTR_SIZE     (1 << 3)
 #define FATTR_ATIME    (1 << 4)
 #define FATTR_MTIME    (1 << 5)
+#define FATTR_FH       (1 << 6)
 
 /**
  * Flags returned by the OPEN request
@@ -99,15 +103,13 @@ enum fuse_opcode {
        FUSE_OPENDIR       = 27,
        FUSE_READDIR       = 28,
        FUSE_RELEASEDIR    = 29,
-       FUSE_FSYNCDIR      = 30
+       FUSE_FSYNCDIR      = 30,
+       FUSE_ACCESS        = 34,
+       FUSE_CREATE        = 35
 };
 
-/* Conservative buffer size for the client */
-#define FUSE_MAX_IN 8192
-
-#define FUSE_NAME_MAX 1024
-#define FUSE_SYMLINK_MAX 4096
-#define FUSE_XATTR_SIZE_MAX 4096
+/* The read buffer is required to be at least 8k, but may be much larger */
+#define FUSE_MIN_READ_BUFFER 8192
 
 struct fuse_entry_out {
        __u64   nodeid;         /* Inode ID */
@@ -152,12 +154,25 @@ struct fuse_link_in {
 struct fuse_setattr_in {
        __u32   valid;
        __u32   padding;
-       struct fuse_attr attr;
+       __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   padding;
+       __u32   mode;
 };
 
 struct fuse_open_out {
@@ -197,6 +212,8 @@ struct fuse_write_out {
        __u32   padding;
 };
 
+#define FUSE_COMPAT_STATFS_SIZE 48
+
 struct fuse_statfs_out {
        struct fuse_kstatfs st;
 };
@@ -222,9 +239,21 @@ struct fuse_getxattr_out {
        __u32   padding;
 };
 
-struct fuse_init_in_out {
+struct fuse_access_in {
+       __u32   mask;
+       __u32   padding;
+};
+
+struct fuse_init_in {
+       __u32   major;
+       __u32   minor;
+};
+
+struct fuse_init_out {
        __u32   major;
        __u32   minor;
+       __u32   unused[3];
+       __u32   max_write;
 };
 
 struct fuse_in_header {