[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>
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 87d25b8..b4aa8f7 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -40,6 +40,15 @@
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 @@
/** 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 @@
/** 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 @@
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);