aboutsummaryrefslogtreecommitdiffstats
path: root/fs/fuse/fuse_i.h
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2005-09-09 16:10:36 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-09 17:03:47 -0400
commit04730fef1f9c7277e5c730b193e681ac095b0507 (patch)
tree3694ea435eb38f10dadc5c8b6abd603a7e10f52e /fs/fuse/fuse_i.h
parent413ef8cb302511d8e995e2b0e5517ee1a65b9c77 (diff)
[PATCH] fuse: transfer readdir data through device
This patch removes a long lasting "hack" in FUSE, which used a separate channel (a file descriptor refering to a disk-file) to transfer directory contents from userspace to the kernel. The patch adds three new operations (OPENDIR, READDIR, RELEASEDIR), which have semantics and implementation exactly maching the respective file operations (OPEN, READ, RELEASE). This simplifies the directory reading code. Also disk space is not necessary, which can be important in embedded systems. 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.h22
1 files changed, 17 insertions, 5 deletions
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 0af1ac646927..8593d5bae7a6 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -273,11 +273,6 @@ struct fuse_conn {
273 struct backing_dev_info bdi; 273 struct backing_dev_info bdi;
274}; 274};
275 275
276struct fuse_getdir_out_i {
277 int fd;
278 void *file; /* Used by kernel only */
279};
280
281static inline struct fuse_conn **get_fuse_conn_super_p(struct super_block *sb) 276static inline struct fuse_conn **get_fuse_conn_super_p(struct super_block *sb)
282{ 277{
283 return (struct fuse_conn **) &sb->s_fs_info; 278 return (struct fuse_conn **) &sb->s_fs_info;
@@ -334,6 +329,23 @@ void fuse_send_forget(struct fuse_conn *fc, struct fuse_req *req,
334 unsigned long nodeid, u64 nlookup); 329 unsigned long nodeid, u64 nlookup);
335 330
336/** 331/**
332 * Send READ or READDIR request
333 */
334size_t fuse_send_read_common(struct fuse_req *req, struct file *file,
335 struct inode *inode, loff_t pos, size_t count,
336 int isdir);
337
338/**
339 * Send OPEN or OPENDIR request
340 */
341int fuse_open_common(struct inode *inode, struct file *file, int isdir);
342
343/**
344 * Send RELEASE or RELEASEDIR request
345 */
346int fuse_release_common(struct inode *inode, struct file *file, int isdir);
347
348/**
337 * Initialise file operations on a regular file 349 * Initialise file operations on a regular file
338 */ 350 */
339void fuse_init_file_inode(struct inode *inode); 351void fuse_init_file_inode(struct inode *inode);