From dbe0f6584164fe60b6eac6ffc4cd097b978e33a0 Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Sat, 15 Jan 2005 14:32:56 +0000 Subject: [PATCH] fix --- ChangeLog | 6 +++++- kernel/configure.ac | 8 ++++---- kernel/dir.c | 6 ++++-- kernel/fuse_i.h | 5 +++++ 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7530e5e..cd11a52 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ -2005-01-13 Miklos Szeredi +2005-01-15 Miklos Szeredi + + * fix compilation on 2.4 kernels (reported by Valient Gough) + * fix failure to unmount bug (found by David Shaw) + * fusermount: improve parsing of /etc/fuse.conf 2005-01-13 Miklos Szeredi diff --git a/kernel/configure.ac b/kernel/configure.ac index 687e45a..e90c4c3 100644 --- a/kernel/configure.ac +++ b/kernel/configure.ac @@ -56,16 +56,16 @@ else kernel_autoconf=$kernelsrc/include/linux/autoconf.h AC_MSG_CHECKING([if FUSE is configured in the kernel]) if test -f $kernel_autoconf; then - if grep -q "^#define CONFIG_FUSE 1" $kernel_autoconf || grep -q "^#define CONFIG_FUSE_MODULE 1" $kernel_autoconf; then + if grep -q "^#define CONFIG_FUSE_FS 1" $kernel_autoconf || grep -q "^#define CONFIG_FUSE_FS_MODULE 1" $kernel_autoconf; then fuse_configured=yes fi fi AC_MSG_RESULT([$fuse_configured]) if test -z "$enable_kernel_module" -a "$fuse_configured" = yes; then ENABLE_FUSE_MODULE=n - AC_MSG_WARN([FUSE is configured in the kernel, not building kernel]) - AC_MSG_WARN([module. To force building of kernel module use the]) - AC_MSG_WARN(['--enable-kernel-module' option.]) + AC_MSG_NOTICE([NOTE: Detected that FUSE is already present in the kernel, so]) + AC_MSG_NOTICE([NOTE: building of kernel module is disabled. To force building]) + AC_MSG_NOTICE([NOTE: of kernel module use the '--enable-kernel-module' option.]) fi fi if test "$enable_kernel_module" = no; then diff --git a/kernel/dir.c b/kernel/dir.c index 41f824c..91fa22c 100644 --- a/kernel/dir.c +++ b/kernel/dir.c @@ -416,7 +416,8 @@ int fuse_do_getattr(struct inode *inode) fuse_put_request(fc, req); if (!err) { if ((inode->i_mode ^ arg.attr.mode) & S_IFMT) { - make_bad_inode(inode); + if (get_node_id(inode) != FUSE_ROOT_ID) + make_bad_inode(inode); err = -EIO; } else { struct fuse_inode *fi = get_fuse_inode(inode); @@ -757,7 +758,8 @@ static int fuse_setattr(struct dentry *entry, struct iattr *attr) fuse_put_request(fc, req); if (!err) { if ((inode->i_mode ^ outarg.attr.mode) & S_IFMT) { - make_bad_inode(inode); + if (get_node_id(inode) != FUSE_ROOT_ID) + make_bad_inode(inode); err = -EIO; } else { if (is_truncate) { diff --git a/kernel/fuse_i.h b/kernel/fuse_i.h index d9a4125..92fb703 100644 --- a/kernel/fuse_i.h +++ b/kernel/fuse_i.h @@ -57,6 +57,11 @@ #ifndef BUG_ON #define BUG_ON(x) #endif +#ifndef container_of +#define container_of(ptr, type, member) ({ \ + const typeof( ((type *)0)->member ) *__mptr = (ptr); \ + (type *)( (char *)__mptr - offsetof(type,member) );}) +#endif #ifndef __user #define __user #endif -- 2.30.2