summaryrefslogtreecommitdiffstats
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorMiklos Szeredi2005-11-07 09:59:51 +0100
committerLinus Torvalds2005-11-07 16:53:42 +0100
commitfd72faac95d7e47610e981d7ed7b3c1529e55c88 (patch)
tree65cde1eb6958f410c4b4c72e322fd59db463150f /fs/fuse/fuse_i.h
parent[PATCH] FUSE: add access call (diff)
downloadkernel-qcow2-linux-fd72faac95d7e47610e981d7ed7b3c1529e55c88.tar.gz
kernel-qcow2-linux-fd72faac95d7e47610e981d7ed7b3c1529e55c88.tar.xz
kernel-qcow2-linux-fd72faac95d7e47610e981d7ed7b3c1529e55c88.zip
[PATCH] FUSE: atomic create+open
This patch adds an atomic create+open operation. This does not yet work if the file type changes between lookup and create+open, but solves the permission checking problems for the separte create and open methods. 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.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index c4e8c3b47982..0ea5301f86be 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -269,6 +269,9 @@ struct fuse_conn {
/** Is access not implemented by fs? */
unsigned no_access : 1;
+ /** Is create not implemented by fs? */
+ unsigned no_create : 1;
+
/** Backing dev info */
struct backing_dev_info bdi;
};
@@ -340,6 +343,17 @@ size_t fuse_send_read_common(struct fuse_req *req, struct file *file,
*/
int fuse_open_common(struct inode *inode, struct file *file, int isdir);
+struct fuse_file *fuse_file_alloc(void);
+void fuse_file_free(struct fuse_file *ff);
+void fuse_finish_open(struct inode *inode, struct file *file,
+ struct fuse_file *ff, struct fuse_open_out *outarg);
+
+/**
+ * Send a RELEASE request
+ */
+void fuse_send_release(struct fuse_conn *fc, struct fuse_file *ff,
+ u64 nodeid, struct inode *inode, int flags, int isdir);
+
/**
* Send RELEASE or RELEASEDIR request
*/