aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorGravatar Miklos Szeredi <miklos@szeredi.hu>2005-01-15 14:32:56 +0000
committerGravatar Miklos Szeredi <miklos@szeredi.hu>2005-01-15 14:32:56 +0000
commitdbe0f6584164fe60b6eac6ffc4cd097b978e33a0 (patch)
tree907a79ea07b112fe360b45f76240aee26f801b61 /kernel
parent5ef2a9bd077a6a3cfcbc7d8d3fdccbf4b397df62 (diff)
fix
Diffstat (limited to 'kernel')
-rw-r--r--kernel/configure.ac8
-rw-r--r--kernel/dir.c6
-rw-r--r--kernel/fuse_i.h5
3 files changed, 13 insertions, 6 deletions
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