diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2005-11-07 03:59:51 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-11-07 10:53:42 -0500 |
commit | fd72faac95d7e47610e981d7ed7b3c1529e55c88 (patch) | |
tree | 65cde1eb6958f410c4b4c72e322fd59db463150f /fs/fuse/fuse_i.h | |
parent | 31d40d74b402a6fa18a006fb3745f64609f35b77 (diff) |
[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.h | 14 |
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 { | |||
269 | /** Is access not implemented by fs? */ | 269 | /** Is access not implemented by fs? */ |
270 | unsigned no_access : 1; | 270 | unsigned no_access : 1; |
271 | 271 | ||
272 | /** Is create not implemented by fs? */ | ||
273 | unsigned no_create : 1; | ||
274 | |||
272 | /** Backing dev info */ | 275 | /** Backing dev info */ |
273 | struct backing_dev_info bdi; | 276 | struct backing_dev_info bdi; |
274 | }; | 277 | }; |
@@ -340,6 +343,17 @@ size_t fuse_send_read_common(struct fuse_req *req, struct file *file, | |||
340 | */ | 343 | */ |
341 | int fuse_open_common(struct inode *inode, struct file *file, int isdir); | 344 | int fuse_open_common(struct inode *inode, struct file *file, int isdir); |
342 | 345 | ||
346 | struct fuse_file *fuse_file_alloc(void); | ||
347 | void fuse_file_free(struct fuse_file *ff); | ||
348 | void fuse_finish_open(struct inode *inode, struct file *file, | ||
349 | struct fuse_file *ff, struct fuse_open_out *outarg); | ||
350 | |||
351 | /** | ||
352 | * Send a RELEASE request | ||
353 | */ | ||
354 | void fuse_send_release(struct fuse_conn *fc, struct fuse_file *ff, | ||
355 | u64 nodeid, struct inode *inode, int flags, int isdir); | ||
356 | |||
343 | /** | 357 | /** |
344 | * Send RELEASE or RELEASEDIR request | 358 | * Send RELEASE or RELEASEDIR request |
345 | */ | 359 | */ |