kernel interface changes
diff --git a/lib/fuse.c b/lib/fuse.c
index 9d0783d..27e331a 100644
--- a/lib/fuse.c
+++ b/lib/fuse.c
@@ -19,6 +19,9 @@
 #define FUSE_MAX_PATH 4096
 #define PARAM(inarg) (((char *)(inarg)) + sizeof(*inarg))
 
+#define ENTRY_REVALIDATE_TIME 1 /* sec */
+#define ATTR_REVALIDATE_TIME 1 /* sec */
+
 static const char *opname(enum fuse_opcode opcode)
 {
     switch(opcode) { 
@@ -407,7 +410,7 @@
 }
 
 static int lookup_path(struct fuse *f, fino_t ino, int version,  char *name,
-                       const char *path, struct fuse_lookup_out *arg)
+                       const char *path, struct fuse_entry_out *arg)
 {
     int res;
     struct stat buf;
@@ -416,11 +419,15 @@
     if(res == 0) {
         struct node *node;
 
-        memset(arg, 0, sizeof(struct fuse_lookup_out));
+        memset(arg, 0, sizeof(struct fuse_entry_out));
         convert_stat(&buf, &arg->attr);
         node = find_node(f, ino, name, &arg->attr, version);
         arg->ino = node->ino;
         arg->generation = node->generation;
+        arg->entry_valid = ENTRY_REVALIDATE_TIME;
+        arg->entry_valid_nsec = 0;
+        arg->attr_valid = ATTR_REVALIDATE_TIME;
+        arg->attr_valid_nsec = 0;
         if(f->flags & FUSE_DEBUG) {
             printf("   INO: %li\n", arg->ino);
             fflush(stdout);
@@ -433,7 +440,7 @@
 {
     int res;
     char *path;
-    struct fuse_lookup_out arg;
+    struct fuse_entry_out arg;
 
     res = -ENOENT;
     path = get_path_name(f, in->ino, name);
@@ -465,7 +472,7 @@
     int res;
     char *path;
     struct stat buf;
-    struct fuse_getattr_out arg;
+    struct fuse_attr_out arg;
 
     res = -ENOENT;
     path = get_path(f, in->ino);
@@ -477,7 +484,9 @@
     }
 
     if(res == 0) {
-        memset(&arg, 0, sizeof(struct fuse_getattr_out));
+        memset(&arg, 0, sizeof(struct fuse_attr_out));
+        arg.attr_valid = ATTR_REVALIDATE_TIME;
+        arg.attr_valid_nsec = 0;
         convert_stat(&buf, &arg.attr);
     }
 
@@ -541,7 +550,7 @@
     char *path;
     int valid = arg->valid;
     struct fuse_attr *attr = &arg->attr;
-    struct fuse_setattr_out outarg;
+    struct fuse_attr_out outarg;
 
     res = -ENOENT;
     path = get_path(f, in->ino);
@@ -562,7 +571,9 @@
                 struct stat buf;
                 res = f->op.getattr(path, &buf);
                 if(!res) {
-                    memset(&outarg, 0, sizeof(struct fuse_setattr_out));
+                    memset(&outarg, 0, sizeof(struct fuse_attr_out));
+                    outarg.attr_valid = ATTR_REVALIDATE_TIME;
+                    outarg.attr_valid_nsec = 0;
                     convert_stat(&buf, &outarg.attr);
                 }
             }
@@ -622,7 +633,7 @@
     int res;
     char *path;
     char *name = PARAM(inarg);
-    struct fuse_lookup_out outarg;
+    struct fuse_entry_out outarg;
 
     res = -ENOENT;
     path = get_path_name(f, in->ino, name);
@@ -648,7 +659,7 @@
     int res;
     char *path;
     char *name = PARAM(inarg);
-    struct fuse_lookup_out outarg;
+    struct fuse_entry_out outarg;
 
     res = -ENOENT;
     path = get_path_name(f, in->ino, name);
@@ -711,7 +722,7 @@
 {
     int res;
     char *path;
-    struct fuse_lookup_out outarg;
+    struct fuse_entry_out outarg;
 
     res = -ENOENT;
     path = get_path_name(f, in->ino, name);
@@ -766,7 +777,7 @@
     char *oldpath;
     char *newpath;
     char *name = PARAM(arg);
-    struct fuse_lookup_out outarg;
+    struct fuse_entry_out outarg;
 
     res = -ENOENT;
     oldpath = get_path(f, in->ino);