aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2005-01-18 21:23:41 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2005-01-18 21:23:41 +0000
commit3ead28e7b1d08517f91f70d5ec144313b0f646a9 (patch)
tree740a6a095b93d3179af2c80ea9659826c90c3d7d /kernel
parent1adb227764b7ba990b0635b812a49041d3e66dc2 (diff)
downloadlibfuse-3ead28e7b1d08517f91f70d5ec144313b0f646a9.tar.gz
fix
Diffstat (limited to 'kernel')
-rw-r--r--kernel/dir.c4
-rw-r--r--kernel/file.c2
-rw-r--r--kernel/fuse_i.h22
-rw-r--r--kernel/fuse_kernel.h10
4 files changed, 24 insertions, 14 deletions
diff --git a/kernel/dir.c b/kernel/dir.c
index 076d966..38611c5 100644
--- a/kernel/dir.c
+++ b/kernel/dir.c
@@ -534,9 +534,9 @@ static int fuse_readdir(struct file *file, void *dstbuf, filldir_t filldir)
struct page *page;
struct inode *inode = file->f_dentry->d_inode;
struct fuse_conn *fc = get_fuse_conn(inode);
- struct fuse_req *req = fuse_get_request(fc);
+ struct fuse_req *req = fuse_get_request_nonint(fc);
if (!req)
- return -ERESTARTNOINTR;
+ return -EINTR;
page = alloc_page(GFP_KERNEL);
if (!page) {
diff --git a/kernel/file.c b/kernel/file.c
index 41e8d47..0405f7b 100644
--- a/kernel/file.c
+++ b/kernel/file.c
@@ -411,7 +411,7 @@ static int fuse_file_bigread(struct file *file, struct inode *inode,
#endif /* KERNEL_2_6 */
static size_t fuse_send_write(struct fuse_req *req, struct file *file,
- struct inode *inode, loff_t pos, size_t count)
+ struct inode *inode, loff_t pos, size_t count)
{
struct fuse_conn *fc = get_fuse_conn(inode);
struct fuse_file *ff = file->private_data;
diff --git a/kernel/fuse_i.h b/kernel/fuse_i.h
index 92fb703..e4d9588 100644
--- a/kernel/fuse_i.h
+++ b/kernel/fuse_i.h
@@ -321,11 +321,6 @@ struct fuse_conn {
#endif
};
-struct fuse_getdir_out_i {
- int fd;
- void *file; /* Used by kernel only */
-};
-
static inline struct fuse_conn **get_fuse_conn_super_p(struct super_block *sb)
{
#ifdef KERNEL_2_6
@@ -385,6 +380,23 @@ void fuse_send_forget(struct fuse_conn *fc, struct fuse_req *req,
unsigned long nodeid, int version);
/**
+ * Send READ or READDIR request
+ */
+size_t fuse_send_read_common(struct fuse_req *req, struct file *file,
+ struct inode *inode, loff_t pos, size_t count,
+ int isdir);
+
+/**
+ * Send OPEN or OPENDIR request
+ */
+int fuse_open_common(struct inode *inode, struct file *file, int isdir);
+
+/**
+ * Send RELEASE or RELEASEDIR request
+ */
+int fuse_release_common(struct inode *inode, struct file *file, int isdir);
+
+/**
* Initialise file operations on a regular file
*/
void fuse_init_file_inode(struct inode *inode);
diff --git a/kernel/fuse_kernel.h b/kernel/fuse_kernel.h
index 378791b..cd8f46f 100644
--- a/kernel/fuse_kernel.h
+++ b/kernel/fuse_kernel.h
@@ -67,7 +67,6 @@ enum fuse_opcode {
FUSE_SETATTR = 4,
FUSE_READLINK = 5,
FUSE_SYMLINK = 6,
- FUSE_GETDIR = 7,
FUSE_MKNOD = 8,
FUSE_MKDIR = 9,
FUSE_UNLINK = 10,
@@ -85,7 +84,10 @@ enum fuse_opcode {
FUSE_LISTXATTR = 23,
FUSE_REMOVEXATTR = 24,
FUSE_FLUSH = 25,
- FUSE_INIT = 26
+ FUSE_INIT = 26,
+ FUSE_OPENDIR = 27,
+ FUSE_READDIR = 28,
+ FUSE_RELEASEDIR = 29
};
/* Conservative buffer size for the client */
@@ -117,10 +119,6 @@ struct fuse_attr_out {
struct fuse_attr attr;
};
-struct fuse_getdir_out {
- __u32 fd;
-};
-
struct fuse_mknod_in {
__u32 mode;
__u32 rdev;