]> err.no Git - linux-2.6/blobdiff - include/linux/fuse.h
[PATCH] FUSE - extended attribute operations
[linux-2.6] / include / linux / fuse.h
index 21b9ba16f8d526d997e45fe2bee4b7a0b02402a5..bf564edf99054409c4e438cf627eb2e5da53c959 100644 (file)
@@ -11,7 +11,7 @@
 #include <asm/types.h>
 
 /** Version number of this interface */
-#define FUSE_KERNEL_VERSION 6
+#define FUSE_KERNEL_VERSION 7
 
 /** Minor version number of this interface */
 #define FUSE_KERNEL_MINOR_VERSION 1
@@ -52,13 +52,39 @@ struct fuse_kstatfs {
        __u32   namelen;
 };
 
+#define FATTR_MODE     (1 << 0)
+#define FATTR_UID      (1 << 1)
+#define FATTR_GID      (1 << 2)
+#define FATTR_SIZE     (1 << 3)
+#define FATTR_ATIME    (1 << 4)
+#define FATTR_MTIME    (1 << 5)
+#define FATTR_CTIME    (1 << 6)
+
 enum fuse_opcode {
        FUSE_LOOKUP        = 1,
        FUSE_FORGET        = 2,  /* no reply */
        FUSE_GETATTR       = 3,
+       FUSE_SETATTR       = 4,
        FUSE_READLINK      = 5,
+       FUSE_SYMLINK       = 6,
        FUSE_GETDIR        = 7,
+       FUSE_MKNOD         = 8,
+       FUSE_MKDIR         = 9,
+       FUSE_UNLINK        = 10,
+       FUSE_RMDIR         = 11,
+       FUSE_RENAME        = 12,
+       FUSE_LINK          = 13,
+       FUSE_OPEN          = 14,
+       FUSE_READ          = 15,
+       FUSE_WRITE         = 16,
        FUSE_STATFS        = 17,
+       FUSE_RELEASE       = 18,
+       FUSE_FSYNC         = 20,
+       FUSE_SETXATTR      = 21,
+       FUSE_GETXATTR      = 22,
+       FUSE_LISTXATTR     = 23,
+       FUSE_REMOVEXATTR   = 24,
+       FUSE_FLUSH         = 25,
        FUSE_INIT          = 26
 };
 
@@ -66,6 +92,8 @@ enum fuse_opcode {
 #define FUSE_MAX_IN 8192
 
 #define FUSE_NAME_MAX 1024
+#define FUSE_SYMLINK_MAX 4096
+#define FUSE_XATTR_SIZE_MAX 4096
 
 struct fuse_entry_out {
        __u64   nodeid;         /* Inode ID */
@@ -79,7 +107,7 @@ struct fuse_entry_out {
 };
 
 struct fuse_forget_in {
-       __u64   version;
+       __u64   nlookup;
 };
 
 struct fuse_attr_out {
@@ -93,10 +121,86 @@ struct fuse_getdir_out {
        __u32   fd;
 };
 
+struct fuse_mknod_in {
+       __u32   mode;
+       __u32   rdev;
+};
+
+struct fuse_mkdir_in {
+       __u32   mode;
+};
+
+struct fuse_rename_in {
+       __u64   newdir;
+};
+
+struct fuse_link_in {
+       __u64   oldnodeid;
+};
+
+struct fuse_setattr_in {
+       __u32   valid;
+       struct fuse_attr attr;
+};
+
+struct fuse_open_in {
+       __u32   flags;
+};
+
+struct fuse_open_out {
+       __u64   fh;
+       __u32   open_flags;
+};
+
+struct fuse_release_in {
+       __u64   fh;
+       __u32   flags;
+};
+
+struct fuse_flush_in {
+       __u64   fh;
+       __u32   flush_flags;
+};
+
+struct fuse_read_in {
+       __u64   fh;
+       __u64   offset;
+       __u32   size;
+};
+
+struct fuse_write_in {
+       __u64   fh;
+       __u64   offset;
+       __u32   size;
+       __u32   write_flags;
+};
+
+struct fuse_write_out {
+       __u32   size;
+};
+
 struct fuse_statfs_out {
        struct fuse_kstatfs st;
 };
 
+struct fuse_fsync_in {
+       __u64   fh;
+       __u32   fsync_flags;
+};
+
+struct fuse_setxattr_in {
+       __u32   size;
+       __u32   flags;
+};
+
+struct fuse_getxattr_in {
+       __u32   size;
+};
+
+struct fuse_getxattr_out {
+       __u32   size;
+};
+
 struct fuse_init_in_out {
        __u32   major;
        __u32   minor;