fix
authorMiklos Szeredi <miklos@szeredi.hu>
Thu, 29 Jan 2004 11:29:18 +0000 (11:29 +0000)
committerMiklos Szeredi <miklos@szeredi.hu>
Thu, 29 Jan 2004 11:29:18 +0000 (11:29 +0000)
ChangeLog
kernel/dev.c

index cb4b313be14db4d2e116fb40046b5543e95a8990..7c888032cb0b61f9a5e5b3b99f56e9fbbde1aa83 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2004-01-29  Miklos Szeredi <mszeredi@inf.bme.hu>
+
+       * Properly check if the inode exists in fuse_invalidate
+       
 2004-01-27  Miklos Szeredi <mszeredi@inf.bme.hu>
 
        * Added -q option for fusermount
index 98513279c10682ce0a619797a80f5feb13848ae5..daa464e2bfb3a9b2e08a8e31da9cc31d648aa387 100644 (file)
@@ -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)