summaryrefslogtreecommitdiff
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2005-09-09 13:10:30 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-09 14:03:45 -0700
commitb6aeadeda22a9aa322fdfcd3f4c69ccf0da5cbdd (patch)
tree794afec0eeb13722550a97783ec0cfb95e5e83cb /fs/fuse/fuse_i.h
parent9e6268db496a2592e89457537ea54a496feabb77 (diff)
downloadlwn-b6aeadeda22a9aa322fdfcd3f4c69ccf0da5cbdd.tar.gz
lwn-b6aeadeda22a9aa322fdfcd3f4c69ccf0da5cbdd.zip
[PATCH] FUSE - file operations
This patch adds the file operations of FUSE. The following operations are added: o open o flush o release o fsync o readpage o commit_write 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 'fs/fuse/fuse_i.h')
-rw-r--r--fs/fuse/fuse_i.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 87d25b8f2dc1..b4aa8f7bc2c1 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -40,6 +40,15 @@ struct fuse_inode {
unsigned long i_time;
};
+/** FUSE specific file data */
+struct fuse_file {
+ /** Request reserved for flush and release */
+ struct fuse_req *release_req;
+
+ /** File handle used by userspace */
+ u64 fh;
+};
+
/** One input argument of a request */
struct fuse_in_arg {
unsigned size;
@@ -136,6 +145,7 @@ struct fuse_req {
/** Data for asynchronous requests */
union {
struct fuse_forget_in forget_in;
+ struct fuse_release_in release_in;
struct fuse_init_in_out init_in_out;
} misc;
@@ -200,6 +210,12 @@ struct fuse_conn {
/** Connection failed (version mismatch) */
unsigned conn_error : 1;
+ /** Is fsync not implemented by fs? */
+ unsigned no_fsync : 1;
+
+ /** Is flush not implemented by fs? */
+ unsigned no_flush : 1;
+
/** Backing dev info */
struct backing_dev_info bdi;
};
@@ -264,6 +280,11 @@ void fuse_send_forget(struct fuse_conn *fc, struct fuse_req *req,
unsigned long nodeid, u64 nlookup);
/**
+ * Initialise file operations on a regular file
+ */
+void fuse_init_file_inode(struct inode *inode);
+
+/**
* Initialise inode operations on regular files and special files
*/
void fuse_init_common(struct inode *inode);