aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2008-11-26 06:03:55 -0500
committerMiklos Szeredi <miklos@szeredi.hu>2008-11-26 06:03:55 -0500
commitacf99433d98c2570a619d8fb8b51abce4e532059 (patch)
tree3d8c6933448ad67c4343808113c7ee8f41050349 /fs/fuse/fuse_i.h
parent59efec7b903987dcb60b9ebc85c7acd4443a11a1 (diff)
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 4fc5131f5c9d..86f013303828 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -100,6 +100,9 @@ struct fuse_file {
100 /** Request reserved for flush and release */ 100 /** Request reserved for flush and release */
101 struct fuse_req *reserved_req; 101 struct fuse_req *reserved_req;
102 102
103 /** Kernel file handle guaranteed to be unique */
104 u64 kh;
105
103 /** File handle used by userspace */ 106 /** File handle used by userspace */
104 u64 fh; 107 u64 fh;
105 108
@@ -322,6 +325,9 @@ struct fuse_conn {
322 /** The list of requests under I/O */ 325 /** The list of requests under I/O */
323 struct list_head io; 326 struct list_head io;
324 327
328 /** The next unique kernel file handle */
329 u64 khctr;
330
325 /** Number of requests currently in the background */ 331 /** Number of requests currently in the background */
326 unsigned num_background; 332 unsigned num_background;
327 333
@@ -499,7 +505,7 @@ void fuse_read_fill(struct fuse_req *req, struct file *file,
499 */ 505 */
500int fuse_open_common(struct inode *inode, struct file *file, int isdir); 506int fuse_open_common(struct inode *inode, struct file *file, int isdir);
501 507
502struct fuse_file *fuse_file_alloc(void); 508struct fuse_file *fuse_file_alloc(struct fuse_conn *fc);
503void fuse_file_free(struct fuse_file *ff); 509void fuse_file_free(struct fuse_file *ff);
504void fuse_finish_open(struct inode *inode, struct file *file, 510void fuse_finish_open(struct inode *inode, struct file *file,
505 struct fuse_file *ff, struct fuse_open_out *outarg); 511 struct fuse_file *ff, struct fuse_open_out *outarg);