diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2005-09-02 13:05:06 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2005-09-02 13:05:06 +0000 |
commit | 564878188251c3f66c0a297dcad7d6c095ac2efd (patch) | |
tree | 3ee0671cf6300e46b3de3613092d7199b7fe9ec6 | |
parent | ecce1bf2ff73eb37048a784df0fa97ad041c6bdd (diff) |
fix
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | kernel/dir.c | 17 | ||||
-rw-r--r-- | kernel/fuse_i.h | 3 | ||||
-rw-r--r-- | kernel/fuse_kernel.h | 7 |
4 files changed, 30 insertions, 4 deletions
@@ -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) |