summaryrefslogtreecommitdiff
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2008-11-26 12:03:55 +0100
committerMiklos Szeredi <miklos@szeredi.hu>2008-11-26 12:03:55 +0100
commitacf99433d98c2570a619d8fb8b51abce4e532059 (patch)
tree3d8c6933448ad67c4343808113c7ee8f41050349 /fs/fuse/fuse_i.h
parent59efec7b903987dcb60b9ebc85c7acd4443a11a1 (diff)
downloadlinux-3.10-acf99433d98c2570a619d8fb8b51abce4e532059.tar.gz
linux-3.10-acf99433d98c2570a619d8fb8b51abce4e532059.tar.bz2
linux-3.10-acf99433d98c2570a619d8fb8b51abce4e532059.zip
fuse: add file kernel handle
The file handle, fuse_file->fh, is opaque value supplied by userland FUSE server and uniqueness is not guaranteed. Add file kernel handle, fuse_file->kh, which is allocated by the kernel on file allocation and guaranteed to be unique. This will be used by poll to match notification to the respective file but can be used for other purposes where unique file handle is necessary. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
Diffstat (limited to 'fs/fuse/fuse_i.h')
-rw-r--r--fs/fuse/fuse_i.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 4fc5131f5c9..86f01330382 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -100,6 +100,9 @@ struct fuse_file {
/** Request reserved for flush and release */
struct fuse_req *reserved_req;
+ /** Kernel file handle guaranteed to be unique */
+ u64 kh;
+
/** File handle used by userspace */
u64 fh;
@@ -322,6 +325,9 @@ struct fuse_conn {
/** The list of requests under I/O */
struct list_head io;
+ /** The next unique kernel file handle */
+ u64 khctr;
+
/** Number of requests currently in the background */
unsigned num_background;
@@ -499,7 +505,7 @@ void fuse_read_fill(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);
+struct fuse_file *fuse_file_alloc(struct fuse_conn *fc);
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);