aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/dev.c
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2004-01-29 11:29:18 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2004-01-29 11:29:18 +0000
commit72f6a93d1bfdab2a325914e4c95a379d02090970 (patch)
tree682a852b3cc42edf68a831e418d6a6c960a70657 /kernel/dev.c
parentf4f8b89730a3b94d5118d5ec66438e7dec8e6b3d (diff)
downloadlibfuse-72f6a93d1bfdab2a325914e4c95a379d02090970.tar.gz
fix
Diffstat (limited to 'kernel/dev.c')
-rw-r--r--kernel/dev.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/kernel/dev.c b/kernel/dev.c
index 9851327..daa464e 100644
--- a/kernel/dev.c
+++ b/kernel/dev.c
@@ -410,21 +410,31 @@ static inline int copy_out_header(struct fuse_out_header *oh, const char *buf,
return 0;
}
+#ifdef KERNEL_2_6
static int fuse_invalidate(struct fuse_conn *fc, struct fuse_user_header *uh)
{
- struct inode *inode = iget(fc->sb, uh->ino);
+ struct inode *inode = ilookup(fc->sb, uh->ino);
if (!inode)
return -ENOENT;
-
-#ifdef KERNEL_2_6
invalidate_inode_pages(inode->i_mapping);
-#else
- invalidate_inode_pages(inode);
-#endif
-
iput(inode);
return 0;
}
+#else
+static int fuse_invalidate(struct fuse_conn *fc, struct fuse_user_header *uh)
+{
+ struct inode *inode = iget(fc->sb, uh->ino);
+ int err = -ENOENT;
+ if(inode) {
+ if(inode->u.generic_ip) {
+ invalidate_inode_pages(inode);
+ err = 0;
+ }
+ iput(inode);
+ }
+ return err;
+}
+#endif
static int fuse_user_request(struct fuse_conn *fc, const char *buf,
size_t nbytes)