From: Miklos Szeredi Date: Fri, 2 Sep 2005 13:05:06 +0000 (+0000) Subject: fix X-Git-Tag: fuse_2_4_0_pre2~11 X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=564878188251c3f66c0a297dcad7d6c095ac2efd;p=qemu-gpiodev%2Flibfuse.git fix --- diff --git a/ChangeLog b/ChangeLog index c44e8ff..f5a3324 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-09-02 Miklos Szeredi + + * 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 * 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)