aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Miklos Szeredi <miklos@szeredi.hu>2005-09-02 13:05:06 +0000
committerGravatar Miklos Szeredi <miklos@szeredi.hu>2005-09-02 13:05:06 +0000
commit564878188251c3f66c0a297dcad7d6c095ac2efd (patch)
tree3ee0671cf6300e46b3de3613092d7199b7fe9ec6
parentecce1bf2ff73eb37048a784df0fa97ad041c6bdd (diff)
fix
-rw-r--r--ChangeLog7
-rw-r--r--kernel/dir.c17
-rw-r--r--kernel/fuse_i.h3
-rw-r--r--kernel/fuse_kernel.h7
4 files changed, 30 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index c44e8ff..f5a3324 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2005-09-02 Miklos Szeredi <miklos@szeredi.hu>
+
+ * Don't call ACCESS on open. Will do this properly with atomic
+ open/create
+
+ * Fix compile warning on 2.6.13 and later
+
2005-08-25 Miklos Szeredi <miklos@szeredi.hu>
* lib: add userspace side of ftruncate() method for experimentation
diff --git a/kernel/dir.c b/kernel/dir.c
index f2fe170..f1baf78 100644
--- a/kernel/dir.c
+++ b/kernel/dir.c
@@ -552,9 +552,7 @@ static int fuse_permission(struct inode *inode, int mask, struct nameidata *nd)
return -EACCES;
err = 0;
- if (nd &&
- ((nd->flags & LOOKUP_ACCESS) ||
- ((nd->flags & LOOKUP_OPEN) && mode != 0)))
+ if (nd && (nd->flags & LOOKUP_ACCESS))
err = fuse_access(inode, mask);
}
return err;
@@ -662,7 +660,18 @@ static void free_link(char *link)
free_page((unsigned long) link);
}
-#ifdef KERNEL_2_6_8_PLUS
+#ifdef KERNEL_2_6_13_PLUS
+static void *fuse_follow_link(struct dentry *dentry, struct nameidata *nd)
+{
+ nd_set_link(nd, read_link(dentry));
+ return NULL;
+}
+
+static void fuse_put_link(struct dentry *dentry, struct nameidata *nd, void *c)
+{
+ free_link(nd_get_link(nd));
+}
+#elif defined(KERNEL_2_6_8_PLUS)
static int fuse_follow_link(struct dentry *dentry, struct nameidata *nd)
{
nd_set_link(nd, read_link(dentry));
diff --git a/kernel/fuse_i.h b/kernel/fuse_i.h
index 08c6deb..1f30d82 100644
--- a/kernel/fuse_i.h
+++ b/kernel/fuse_i.h
@@ -28,6 +28,9 @@
# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10)
# define KERNEL_2_6_10_PLUS
# endif
+# if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,13)
+# define KERNEL_2_6_13_PLUS
+# endif
#endif
#include "config.h"
diff --git a/kernel/fuse_kernel.h b/kernel/fuse_kernel.h
index e1d8a0c..c668c68 100644
--- a/kernel/fuse_kernel.h
+++ b/kernel/fuse_kernel.h
@@ -63,6 +63,7 @@ struct fuse_file_lock {
__u32 type;
};
+/** Valid attribute mask used in the SETATTR request */
#define FATTR_MODE (1 << 0)
#define FATTR_UID (1 << 1)
#define FATTR_GID (1 << 2)
@@ -71,6 +72,12 @@ struct fuse_file_lock {
#define FATTR_MTIME (1 << 5)
#define FATTR_CTIME (1 << 6)
+/**
+ * Flags returned by the OPEN request
+ *
+ * FOPEN_DIRECT_IO: bypass page cache for this open file
+ * FOPEN_KEEP_CACHE: don't invalidate the data cache on open
+ */
#define FOPEN_DIRECT_IO (1 << 0)
#define FOPEN_KEEP_CACHE (1 << 1)